- ベストアンサー
大学のプログラミングの課題で縦の合計が正常に出力されない理由とは?
- 大学のプログラミングの課題で、3行3列の正の実数データを入力して行列のように出力し、縦の合計と横の合計を求めるプログラムを作成しました。
- 横の合計は正常に出力されるのですが、縦の合計が-107374...と表示されてしまいます。
- どこが間違っているのか分からず困っています。詳しい解説を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> for(j=0;j<3;j++); また、前と同じことやってますよ http://okwave.jp/qa/q6356162.html 悪癖が着く前に治しましょう。
その他の回答 (2)
- KEIS050162
- ベストアンサー率47% (890/1879)
#1さん、すごいですね。 蛇足: for文は、 for (j=0; j<3; j++ ) { ”ここに繰り返す命令を書く” } のですが、 for (j=0; j<3; j++ ) ; と、セミコロンを書いてしまうと、セミコロンまでの命令文を繰り返すとなってしまいます。 この例ですと、何も書かれていないので、単に j がインクリメントされ、最後には j には3が代入されるだけでループが終了します。 次の { から、 } までは一つの命令郡になりますので、一度だけ実行されます。 今回の例では、sumb に0を代入した後、 data[0][3]、data[1][3], data[2][3]が次々に加算されます。(j=3のままなので) dataは、float data[3][3] で定義されていますので、data[?][3] は定義されていない領域(通常は不定値)になりますので、異常な値が加算されていたことになります。 なので、最初の誤記 ”;” を取れば、確実に動くでしょう。 蛇足の蛇足: cで記述する場合、インデントをちゃんと入れると見易くなります。 例: printf("集計の結果は次のとおりである。\n"); for(i=0;i<3;i++) { suma=0; for(j=0;j<3;j++) { suma=suma+data[i][j]; printf("%7.2f ",data[i][j]); } printf(":"); printf("%7.2f ",suma); printf("\n"); sumsum=sumsum+suma; } printf("======================================\n"); for(j=0;j<3;j++); { ご参考に。
- yusakai0220
- ベストアンサー率50% (18/36)
printf("======================================\n"); のすぐ下にある, for(j=0;j<3;j++); の行末にある";"を削除
お礼
ありがとうございます しょうもないミスでした(^^;) 無事に解決しました!!
お礼
ありがとうございます 単純なケアレスミスですね もっと気をつけます(^^;)