前提・実現したいこと
kakeiという構造体を作り、
関数inumで医療費の最も多い月の配列番号
関数snumで食費の最も多い月の配列番号
を出したいと考えています。
発生している問題
下記のエラーメッセージが出てきてしまいます。
どこを改善すれば良いか教えていただけると幸いです。
エラーメッセージ
prob67c:73:48: warning: implicit declaration of function 'inum' is invalid in C99
[-Wimplicit-function-declaration]
printf("医療費の最も多い月:%d月\n",inum(data));
^
prob67.c:74:65: warning: implicit declaration of function 'snum' is invalid in C99
[-Wimplicit-function-declaration]
printf("食費の最も多い月と金額:%d月、%d\n", data[snum(data)].month, data[snu...
^
2 warnings generated.
Undefined symbols for architecture x86_64:
"_inum", referenced from:
_main in prob67-00bc76.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ソースコード
#include<stdio.h> #define MONTH_NUM 6 typedef struct{ int month; int jyukyohi; int syokuhi; int hifukuhi; int kyoikuhi; int iryohi; int sonota; }kakei; void goukei(kakei*); int imax(kakei*); int smax(kakei*); int main(){ kakei data[MONTH_NUM]; int i; data[0].month=1; data[1].month=2; data[2].month=3; data[3].month=4; data[4].month=5; data[5].month=6; for(i=0;i<MONTH_NUM;i++){ data[i].jyukyohi=86000; } data[0].syokuhi=47000; data[1].syokuhi=43000; data[2].syokuhi=38600; data[3].syokuhi=39500; data[4].syokuhi=38600; data[5].syokuhi=37500; data[0].hifukuhi=3000; data[1].hifukuhi=30000; data[2].hifukuhi=5000; data[3].hifukuhi=0; data[4].hifukuhi=28000; data[5].hifukuhi=3000; data[0].kyoikuhi=20000; data[1].kyoikuhi=15000; data[2].kyoikuhi=65000; data[3].kyoikuhi=12000; data[4].kyoikuhi=7000; data[5].kyoikuhi=5000; data[0].iryohi=9500; data[1].iryohi=0; data[2].iryohi=500; data[3].iryohi=0; data[4].iryohi=5200; data[5].iryohi=0; data[0].sonota=66000; data[1].sonota=43000; data[2].sonota=76000; data[3].sonota=75000; data[4].sonota=63500; data[5].sonota=67000; printf("各月の出費の合計\n"); printf("---------------\n"); goukei(data); printf("医療費の最も多い月:%d月\n",inum(data)); printf("食費の最も多い月と金額:%d月、%d\n", data[snum(data)].month, data[snum(data)].syokuhi); } void goukei(kakei *data){ int i; for(i=0;i<MONTH_NUM;i++){ printf("%d月 %d\n", data[i].month, data[i].jyukyohi+ data[i].syokuhi+ data[i].hifukuhi+ data[i].kyoikuhi+ data[i].iryohi+ data[i].sonota); } } int imax(kakei *data){ int max, i, maxnum=0; max=data[0].iryohi; for(i=1;i<MONTH_NUM;i++){ if(max<data[i].iryohi){ max=data[i].iryohi; maxnum=i; } } return maxnum; } int snum(kakei *data){ int max, maxnum=0, i; max=data[0].syokuhi; for(i=1;i<MONTH_NUM;i++){ if(max<data[i].syokuhi){ max=data[i].syokuhi; maxnum=i; } } return maxnum; }
試したこと
関数のプロトタイプ宣言がされていないとこのようなエラーメッセージが出る、と調べてわかったのですが、どこを直せば良いかわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/12 05:20