前提・実現したいこと
プログラミングC言語初心者です。
構造体で表された個人データをファイルから読み込んで、データ処理として科目の平均やGPAなどを作成するプログラムを作っており、最初に必要な科目別の合計を求める関数がうまくmain関数に反映されません。
どうすればいいのでしょうか。ご協力お願いします。
該当のソースコード
C
1/* 2 学生の成績管理システムを作成 3*/ 4#include <stdio.h> 5#include <stdlib.h> 6#include <math.h> 7#define NUMBER 5 8 9typedef struct { 10 char str[128]; /*在籍番号*/ 11 char name[64]; /*氏名*/ 12 double Japanese; /*国語の点数*/ 13 double math; /*数学の点数*/ 14 double English; /*英語の点数*/ 15} Student; 16 17int main(void){ 18 FILE *fp; 19 int i; 20 Student std[NUMBER]; 21 if((fp = fopen("File1.dat", "r")) == NULL){ 22 printf("\aファイルをオープン出来ません。\n"); 23 } 24 else{ 25 for(i = 0;i < NUMBER; i++){ 26 while (fscanf(fp, "%s %s %lf %lf %lf\n", std[i].str, std[i].name, 27 &std[i].Japanese, &std[i].math,&std[i].English) == 5){ 28 printf("%-10s %-10s %5.1f %5.1f %5.1f\n", std[i].str, std[i].name, 29 std[i].Japanese, std[i].math,std[i].English); 30 31 } 32 33 } 34 printf("------------------------------------------\n"); 35 sum(std, NUMBER); 36 printf("科目別の合計点 %5.1f %5.1f %5.1f\n",std[i].Japanese , std[i].math, std[i].English); 37 38 } 39 fclose(fp); 40 return 0; 41 } 42 43 44double sum(Student a[], int n) 45{ 46 int i; 47 double jsum = 0.0; 48 double msum = 0.0; 49 double esum = 0.0; 50 51 for(i = 0; i < n; i++){ 52 jsum += a[i].Japanese; 53 msum += a[i].math; 54 esum += a[i].English; 55 } 56 57}
補足情報(ファイルの入力)
C
1T19H100a DAICHI_ARAI 60 70 55 2T19H134j RIKU_TAKAMA 70 95 70 3T18H236k YUYA_ASAKA 55 75 69 4E19C554m DAIKI_TOTSUKA 100 50 95 5L15U934o KAITO_ARAI 40 30 58
前提・実現したいこと
科目別の合計点を求める関数をmain関数に反映させたいです。
エラーコード
C
1Main.c:35:9: warning: implicit declaration of function 'sum' is invalid in C99 [-Wimplicit-function-declaration] 2 sum(std, NUMBER); 3 ^ 4Main.c:43:8: error: conflicting types for 'sum' 5double sum(Student a[], int n) 6 ^ 7Main.c:35:9: note: previous implicit declaration is here 8 sum(std, NUMBER); 9 ^ 101 warning and 1 error generated.
補足情報(FW/ツールのバージョンなど)
paiza.ioで製作しています。