• 締切済み

C言語 関数の問題

C言語(関数の問題)で読み込んだ4つの整数の最大値を求めプログラムで 整数を2つペア比較し、関数の入れ子を用いて最大値を見つけて、表示する。 というプログラムを作成したいのですが #include<stdio.h> int maxof(int a, int b) { if(a > b) return (a); else return (b); } int max4(int a, int b, int c, int d) { max(max(a, b), max(c, d)); } int main(void) { int num1,num2, num3, num4; ------ 整数の読み込み printf("最大値は%dです。", max4(num1, num2, num3, num4)); return(0); } と記述すると、上手くいったのですが これを max関数だけを用いて作成できますでしょうか? 整数の比較は全てmax関数で行いたいです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 に加えて, 処理系が何かも書いてほしい.

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

補足で、やりたいことはわかりました。 それで、具体的なプログラムと、エラーメッセージは、どうなっているのですか? 「エラーになります」だけでは、アドバイスもできません。

  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.2

max1 = maxof(num1, num2); max2 = maxof(num3, num4); max = maxof(max1, max2); maxの代わりにmax12とでもしたらどうですか。"max"を関数とするのか変数名とするのかはっきりさせるべきです。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

まず。 maxof関数の定義はありますが、 max関数の定義は無いように見えます。 // コンパイラや環境によっては、max関数があるかもしれませんが > max関数だけを用いて作成できますでしょうか? > 整数の比較は全てmax関数で行いたいです。 この部分がよくわかりません。 iMax2 = max(a,b) ; /* max2(a,b) */ iMax3 = max(a,b,c) ; /* max3(a,b,c) */ iMax4 = max(a,b,c,d) ; /* max4(a,b,c,d) */ という感じなのでしょうか。 そうだとすると ○ C言語では「同じ名前で引数の数が違う関数」というのは定義できません。 →多重定義では無理 ○ 「可変長引数」を使うこともできるが、扱い方が難しい →難易度が高い となります。 どうしてもやりたいなら「可変長引数」で対応することになりますので、各種資料、stdarg.hのマクロや関数を参考にして勉強してください。 また。全てをmax関数で、というのがこれと違う意味なら、もっと具体的に説明してください。

noname#210419
質問者

補足

定義はmaxof関数でした。 maxof関数を入れ子にして、4つの整数を比べ、その中から1つ最大値を求めたいです。 max1 = maxof(num1, num2); max2 = maxof(num3, num4); max = maxof(max1, max2); コンパイル時にどうしてもエラーがでてしまいます。 上手く、値を評価できていないようです。

関連するQ&A