- 締切済み
質問:C++のプログラミング
次のような課題が出たのですがわかりません。 教えてください。 <課題> Main関数で3つの数をscanfで入力し、関数max(これを作る)に行ってその3つの数の最大値を求めて次のように出力するようにせよ。 data? (任意の数字3つを入力) maximum=(一番大きな数) そもそもfor文を使えばいいのかdo while文を使えばいいのかというところから分かっていません。 どなたかよろしくおねがいします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- bulgaris
- ベストアンサー率50% (8/16)
#include <stdio.h> typedef int I;typedef char C;typedef void V; I(*_)(C*,...)=printf; I(*__)(C*,...)=scanf; I ___(I ____,I _____,I ______){ return ((____>_____?____:_____)>(_____>______?_____:______)) ?(____>_____?____:_____):(_____>______?_____:______); } V main(){ I ____[3]; __("%d%d%d",____,____+1,____+2); _("%d",___(____[0],____[1],____[2])); } ...ごめん。ちょっと、やってみたかった。
- Trick--x--
- ベストアンサー率26% (19/72)
その課題の「何が」わからないの? > for文を使えばいいのかdo while文を使えばいいのかというところから と言っているが、そのループを「どこで(何に)」使おうとしてるの? 問題の分解 問題はより単純な複数の問題に分解できる。 この場合は、 ・3つの数字(数値)を入力させる ・3つの数値のうち最大のものを探す という二つに分けられるね。 それぞれ単独の問題としては出来るのか? 出来ないのであれば何が分からないのか? 一度整理してください。 あと! ここで回答に書かれたプログラムを実行して動いたらそれで終わり、何てことはしないように。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
シンプルに徹するのであれば、 int max(int a, int b, int c) { if (a < b) a = b; if (a < c) a = c; return c; } あたりで良いのではないかと思います。 4個(以上)への拡張や、(配列を使った)多数個への拡張の道筋もつけやすいでしょう。
- smat7
- ベストアンサー率46% (7/15)
とても初級の課題と見受けられますので対象を3つの数限定としてforなどのループ構造を使わない解でよいのではないでしょうか(当然配列も使わない)? scanfでa,b,cの3つの変数に値を入れて int my_max(int a, int b, int c) { if(a>=b && a>=c) return a; if(b>=c && b>=a) return b; return c; } が分かりやすいかと 対象の数を増やす、同じ値が入力されたときに別の動作をさせるなどが次の課題として予想されます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
任意の個数なら: #include <algorithm> int max(int* array, int n) { return *std::max_element(array, array+n); } おしまい。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
3つなら: int max(int x, int y, int z) { result ← x と y の大きい方 result ← result と z の大きい方 return result; } おしまい。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
//やりかたは、色々あると思いますが、1つの方法 #include <cstdio> #define DATA_SUU 3 using namespace std; int max(int num[], int size){ int max=num[0]; for(int i=0;i<size;i++){ if(max<num[i]) max=num[i]; } return max; } int main(){ int num[DATA_SUU]; for(int i=0;i<DATA_SUU;i++){ printf("%d番目の数を入力>",i+1); scanf("%d", &num[i]); } int maximum=max(num, DATA_SUU); printf("最大:%d\n",maximum); return 0; }