質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

4回答

1662閲覧

外部ファイルの数値を読み取り、計算して、最大値を表示したい

chondara

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/01/20 10:07

編集2020/01/20 10:40

前提・実現したいこと

c言語で外部のexam_data.txtというファイル内のそれぞれのIDの合計点を求め、最大値を表示したいと考えております。
まだ学びたてで初心者なので、初歩的なミスも多いかもしれませんが、ご了承ください。

発生している問題・エラーメッセージ

line31:エラー:intとintは誤った型の組み合わせです。:binary+演算子

該当のソースコード

#include<stdio.h>
#include<string.h>

struct TEST{ int ID[10]; /* ID */ int score_j[10];/*国語の点数*/ int score_m[10];/*数学の点数*/ int score_e[10];/*英語の点数*/

};
struct TEST test[10];

int main(int argc, char *argv[]){
FILE *testFile;
int i;
float goukei[10];/合計点/
int max, second, third;

/*ファイルを開く*/ testFile=fopen("exam_data.txt","r"); if(testFile==NULL){ printf("Can't open \"exam_data.txt\"\n"); return 1; } for(i=0;i<10;i=i+1){ fscanf(testFile, "%d %d %d %d %d", &test[i].ID,&test[i].score_j, &test[i].score_m, &test[i].score_e); } /*合計点の算出*/ for(i=0;i<10;i=i+1){ goukei[i]==test[i].score_j+test[i].score_m+test[i].score_e; } /*ファイルを閉じる*/ fclose(testFile); /*1番目の定義*/ max=goukei[i]; for(i=0;i<10;i=i+1) if(max<goukei[i]){ max=goukei[i]; } printf("%d\n",max); return 0;

}

試したこと

#include<stdio.h>
int main(void){
FILE testFile;
int i;
int ID[10]; /
ID */
int score_j[10];/国語の点数/
int score_m[10];/数学の点数/
int score_e[10];/英語の点数/
float goukei[10];/合計点/
int max, second, third;

/*ファイルを開く*/ testFile=fopen("exam_data.txt","r"); if(testFile==NULL){ printf("Can't open \"exam_data.txt\"\n"); return 1; } for(i=0;i<10;i=i+1){ fscanf(testFile, "%d %d %d %d %d", &ID[i],&score_j[i],&score_m[i],&score_e[i],&goukei[i]); } /*ファイルを閉じる*/ fclose(testFile); /*合計点の算出*/ goukei[i]==score_j[i]+score_m[i]+score_e[i]; /*1番目の定義*/ max=goukei[i]; for(i=0;i<10;i=i+1) if(max<goukei[i]){ max=goukei[i]; } printf("%d\n",max); return 0;

}
というコードでやってみると、計算結果が0になってしまいます。

補足情報(FW/ツールのバージョンなど)

外部ファイルの中身

ID 国語 数学 英語
1 85 95 70
2 65 80 55
3 80 60 90
4 70 80 90
5 60 40 80
6 70 50 80
7 90 80 90
8 60 80 90
9 90 90 80
10 80 90 80

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YOshim

2020/01/21 06:40

>それぞれのIDの合計点を求め、最大値を表示したいと考えております。 上記の外部ファイルだと ID9の260を表示したいという事でしょうか。
guest

回答4

0

struct TEST{ int ID[10]; /* ID */ int score_j[10];/*国語の点数*/ int score_m[10];/*数学の点数*/ int score_e[10];/*英語の点数*/ }; struct TEST test[10];

ID, 国語, 数学, 英語 それぞれ10個ずつ持った構造体を10個用意するのね?
それがあなたのやりたかったことですか?

投稿2020/01/20 11:21

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chondara

2020/01/20 11:29

そうです。 そこから、それぞれのIDの国数英の合計点を出したいです。
episteme

2020/01/20 11:31

ホント? ID, 国語, 数学, 英語 がそれぞれ100個ですよ?
chondara

2020/01/20 11:40

違いました、すみません。 ひとつの構造体にID、国語、数学、英語それぞれ1個ずつもった構造体を10個作りたいです。 たとえば、ID1、国語85、数学95、英語70という風な感じです。 そして、ID1の場合、85+95+70というようなことをそれぞれの構造体で実行したいと考えています。 説明不足、理解不足が多くてすみません。
episteme

2020/01/20 12:42

だったらこう↓ぢゃろ? struct TEST{ int ID; /* ID */ int score_j;/*国語の点数*/ int score_m;/*数学の点数*/ int score_e;/*英語の点数*/ }; struct TEST test[10];
guest

0

ID毎に合計を算出するなら構造体の中に合計を持たせた方が良いと思いました。

#include <stdio.h> #include <string.h> struct TEST { int ID; /* ID */ int score_j; /*国語の点数*/ int score_m; /*数学の点数*/ int score_e; /*英語の点数*/ int goukei; /*合計の点数*/ }; struct TEST test[10]; int main(int argc, char *argv[]) { FILE *testFile; int i; int max, second, third; /*ファイルを開く*/ testFile = fopen("exam_data.txt", "r"); if (testFile == NULL) { printf("Can't open \"exam_data.txt\"\n"); return 1; } for (i = 0; i < 10; i++) { fscanf(testFile, "%d %d %d %d", &test[i].ID, &test[i].score_j, &test[i].score_m, &test[i].score_e); test[i].goukei = test[i].score_j + test[i].score_m + test[i].score_e; } /*ファイルを閉じる*/ fclose(testFile); /*1番目の定義*/ max = second = third = 0; for (i = 0; i < 10; i++) { if (max <= test[i].goukei) { third = second; second = max; max = test[i].goukei; } } printf("1: %d, 2: %d, 3: %d\n", max, second, third); return 0; }

投稿2020/01/21 07:21

YOshim

総合スコア1085

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

次の順位は2番と3番を表示するでしょうか。

c

1#include<stdio.h> 2 3int main(void){ 4 FILE *testFile; 5 int i; 6 int ID[10]; /* ID */ 7 int score_j[10];/*国語の点数*/ 8 int score_m[10];/*数学の点数*/ 9 int score_e[10];/*英語の点数*/ 10 float goukei[10];/*合計点*/ 11 int max, second, third; 12 13 /*ファイルを開く*/ 14 testFile=fopen("exam_data.txt","r"); 15 if(testFile==NULL){ 16 printf("Can't open \"exam_data.txt\"\n"); 17 return 1; 18 } 19 for(i=0;i<10;i++){ 20 fscanf(testFile, "%d %d %d %d", 21 &ID[i],&score_j[i],&score_m[i],&score_e[i]); 22 goukei[i]=score_j[i]+score_m[i]+score_e[i]; 23 } 24 /*ファイルを閉じる*/ 25 fclose(testFile); 26 27 /*合計点の算出*/ 28 29 /*1番目の定義*/ 30 max=0; 31 for(i=0;i<10;i=i+1) 32 if(max<goukei[i]){ 33 max=goukei[i]; 34 } 35 36 printf("%d\n",max); 37 return 0; 38}

投稿2020/01/21 04:31

編集2020/01/21 04:40
amura

総合スコア333

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

struct TEST{

int ID[10]; /* ID */
int score_j[10];/国語の点数/
int score_m[10];/数学の点数/
int score_e[10];/英語の点数/
};

fscanf(testFile, "%d %d %d %d %d",

&test[i].ID,&test[i].score_j, &test[i].score_m, &test[i].score_e);

.ID とか .score_j(その他も)ってのは配列ですよ


とりあえず、

struct TEST{
int ID; /* ID */
int score_j;/国語の点数/
int score_m;/数学の点数/
int score_e;/英語の点数/
};

に変えてやってみればどうでしょう

投稿2020/01/20 10:19

編集2020/01/20 10:44
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chondara

2020/01/20 10:34

もう少し詳しくお願いできますか? 私が至らないばかりに、お手数をおかけしてすみません。
y_waiwai

2020/01/20 10:47

そもそも、C言語の文法の知識が足りていません。 基礎から学習し直しましょう。 また、あらたに質問建ててるようですが、こっちが解決しないのに何やってんだ、ってことになります (しかも意味不明) 削除依頼出しときましょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問