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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

596閲覧

C言語で関数を使ったプログラムでのコンパイルエラー

beimax

総合スコア7

C

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/04/12 05:04

前提・実現したいこと

イメージ説明

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; }

試したこと

関数のプロトタイプ宣言がされていないとこのようなエラーメッセージが出る、と調べてわかったのですが、どこを直せば良いかわかりませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そのプログラムで、imax()という関数はなんだったんでしょう?

imaxにしよう...と思ってたのがsnumに引っ張られてinumと書いちゃった、とかそういうことでは?

投稿2020/04/12 05:15

thkana

総合スコア7659

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

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

beimax

2020/04/12 05:20

解決しました! 初歩的なミスで申し訳ないです。 ご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問