C言語の問題です。
file.txtを読み込む。
データの値を奇数と偶数に分け、それぞれ合計値・個数・平均値を出力せよ。
奇数データの数・偶数データの数がゼロの場合は、平均値を求めないようにしなさい。
file.txtの中身は「10 11 8 21 6 8 13 26 9 3」です。
#include <stdio.h>
#define SIZE 10
int main(void)
{
FILE *infile;
int i, data[SIZE];
int ksum, knum, gsum, gnum;
ksum = 0;
gsum = 0;
infile = fopen("file.txt", "r");
if(infile == NULL) {
printf("入力ファイルを開くことができません\n");
else{
fscanf(infile, "%d");
if(data[i]%2){
ksum += data[i];
knum += 1;
}
else if(data[i]/2==0){
gsum += data[i];
gnum += 1;
}
}
return 0;
}
for(i = 0; i < SIZE; i ++ ) {
fscanf(infile, "%d", &data[i]);
}
for(i = 0; i < SIZE; i ++ ) {
printf(" %3d", data[i]);
}
printf("%d %d %f", ksum, knum, (double)ksum/knum);
printf("%d %d %f", gsum, gnum, (double)gsum/gnum);
return 0;
}
このように考えたのですが、うまく実行できません。
間違っている箇所やその修正方法などを教えていただけたら嬉しいです。
ちなみに16行目で「else 文が if と一致しません。」というエラーが出てしまいます。
もうひとつ「奇数データの数・偶数データの数がゼロの場合は、平均値を求めない」というのはどのように表せば良いのでしょうか?
ご指導よろしくお願いします。
No.1ベストアンサー
- 回答日時:
解説は下の方です。
----------------------------------------------------------------------
1:#include <stdio.h>
2:
3:#define SIZE 10
4:
5:int main(void)
6:{
7: FILE *infile;
8: int i, data[SIZE];
9: int ksum, knum, gsum, gnum;
10: ksum = 0;
11: gsum = 0;
12: infile = fopen("file.txt", "r");/* ここでファイルをオープンしているが、クローズする処理がない。 */
13:
14: if(infile == NULL) {
15: printf("入力ファイルを開くことができません\n");
16: else{
17: fscanf(infile, "%d");
18:
19: if(data[i]%2){/* 変数iをここで参照しているが、初期化されていないのは良くない× */
20: ksum += data[i];
21: knum += 1;/* 初期化されてない変数knumに加算している。のは良くない× */
22: }
23: else if(data[i]/2==0){/* 偶数であるか調べる判定はこれではない、× */
24: gsum += data[i];
25: gnum += 1;/* 初期化されてない変数gnumに加算している。のは良くない× */
26: }
27: }
28:
29: return 0;
30:}
31:
32:/* ↓ここから下がmain()関数の外になっている。のは良くない× */
33:for(i = 0; i < SIZE; i ++ ) {
34: fscanf(infile, "%d", &data[i]);
35:}
36:
37:for(i = 0; i < SIZE; i ++ ) {
38: printf(" %3d", data[i]);
39:}
40:
41:printf("%d %d %f", ksum, knum, (double)ksum/knum);
42:printf("%d %d %f", gsum, gnum, (double)gsum/gnum);
43:
44:return 0;
45:}/* 対応する括弧が存在しません。× */
46:
----------------------------------------------------------------------
●初期化せずに使用している変数があります。変数は使用前に初期化しましょう。
i, knum, gnum
●ファイルをオープンしている処理はあるが、クローズしていない。
ファイルはオープンしたら、クローズしましょう。
●
>17: fscanf(infile, "%d");
この処理を、ループの外に書いちゃうのは、アルゴリズムを理解していないのではないですか?
これでは、10件のデータは読み込めません。
●main()関数が途中で、終わっている。
途中から、ソースコードが関数の外に書いてある。
●
>45:}/* 対応する括弧が存在しません。× */
閉じ括弧がありますが、対応する開く括弧がありません。
どこが間違っているのか、よく確認しましょう。
●「奇数データの数・偶数データの数がゼロの場合は、平均値を求めない」
>もうひとつ「奇数データの数・偶数データの数がゼロの場合は、平均値を求めない」というのはどのように表せば良いのでしょうか?
カウントを利用してあげると良いと思います。
丁寧な解説をありがとうございます。
いただいた解説を元に修正していったところ、うまく実行することができました。
とてもわかりやすく、本当に助かりました。
もう一度、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
pythonでDBのカラム名で取得し...
-
構造体のソートの方法について...
-
POSTで配列のデータを渡す方法は?
-
stable diffusionのエラー
-
C言語 構造体の名前欄?を小文...
-
C言語の構造体にてバブルソート...
-
テキストファイルの結合について
-
関数マクロの書き方
-
printfの%eで指数部分の桁数を...
-
linuxのシェルでファイル名に先...
-
matlabでのRRI検出
-
'dataType' 引数を Null にする...
-
ループ変数の変更
-
c言語での wavファイルの編集(...
-
平滑化フィルタ
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
Excel VBA メール作成について ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
エクセルVBA:日付データの変換...
-
int型(2バイト)データの分割
-
c言語の多次元配列で1から100ま...
-
C#でのswitch文
-
【Excel VBA】10進数を2進数に...
-
途中経過も表示するプログラム
-
CreateProcessでの環境変数の設...
-
pythonでDBのカラム名で取得し...
-
C言語についてです! 同じ年の...
-
linuxのシェルでファイル名に先...
-
c言語 配列から数字だけをint型...
-
c言語での wavファイルの編集(...
-
matlabのソースコードをpython...
-
ビットデータのチェック方法
-
10個の実数に対する降順ソート...
-
python 気象データの取得
-
C言語の構造体にてバブルソート...
おすすめ情報