2016-10-13 12 views
1

私は把握できないこの割り当てを持っています。Cプログラミング:ファイル文字列内の最大値を見つける

5 
4 
100 500 250 300 
1 
700 
3 
300 150 175 
2 
920 680 
8 
20 10 15 25 50 30 19 23 

我々はオークションの総数を持っている最初の行で:

は、我々は次の形式のファイルを持っています。

その後、2つの行がそれぞれオークションを表します。

最初の行には入札件数があります。次の行には実際の入札があります。

たとえば、番号は、4つの入札(100,500,250,300)のオークションを表しています。

私の仕事は、各オークションの最高入札価格を決定することです。これは私が今までに得たものです。どんな助けもありがとう。

#include <stdio.h> 


int main() { 

    FILE * ifp; 
    char filename[100]; 

    printf("File name\n"); 
    scanf("%s", &filename); 

    ifp = fopen (filename, "r"); 

    if (ifp == NULL) { 
     printf("Error, File could not be opened.\n"); 
     return 1; 
    } 
    int i, num_auctions, auction, j, bid, max; 

    fscanf(ifp, "%d", &num_auctions); 

    for(i=0; i<num_auctions; i++) { 
     fscanf(ifp, "%d", &auction); 
     if (bid > max) 
      max = bid; 
      for(j=0; j<auction; j++){ 
       fscanf(ifp, "%d", &bid); 
       printf("%d\n", bid); 

      } 
      printf("%d\n", max); 
    } 

    fclose(ifp); 
    return 0; 
} 
+3

画像をテキストとして投稿してください。このリンクをクリックする理由はありません。 –

+2

'if(bid> max)'が初めて実行されたときの 'bid'の値は何ですか? – chux

+1

あなたのプログラムの現在の動作が何であるか、なぜそれを理解できないのかを明記してください。 – kaylum

答えて

3

これはコード内の問題です。

  1. bidおよびmaxは、非公開で使用されます。修正すると、宣言時に0に設定されます。
  2. if (bid > max)のチェックが間違っています。各オークションの最後の入札をチェックするだけです。この問題を解決するには、fscanfの後にループを内側のforループに移動します。
  3. maxは、各オークションの後に清算する必要があります。この問題を解決するには、外側のforループの先頭にmaxを0に設定します。
+0

ありがとう、私はそれを最高にするようにしました。元の投稿に追加することを忘れていたので、それらの最高入札額の合計も必要でした。私はそれを追加するために投稿を編集するつもりです。 – element

+1

@Garyしないでください。それは別の問題です。私たちは質問が別の問題に移行し続けることを望んでいません。それを最初にやってみてください。あなたが試みた正確な総和コードを含めて立ち往生した場合は、新しい質問を投稿してください。 – kaylum

+0

申し訳ありません、前に投稿したことはありません。どのように完了したのかわかりません。私はtotal + = maxを試していますが、私はそれを得ることができるかどうかを調べるために別のものを試していきます。そうでなければ、私は新しい質問を書くでしょう。 – element

関連する問題