アプリ版:「スタンプのみでお礼する」機能のリリースについて

次のような課題が出たのですがわかりません。
教えてください。

<課題>
Main関数で3つの数をscanfで入力し、関数max(これを作る)に行ってその3つの数の最大値を求めて次のように出力するようにせよ。

  data? (任意の数字3つを入力)
  maximum=(一番大きな数)

そもそもfor文を使えばいいのかdo while文を使えばいいのかというところから分かっていません。
どなたかよろしくおねがいします。

A 回答 (7件)

#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]));
}

...ごめん。ちょっと、やってみたかった。
    • good
    • 0

その課題の「何が」わからないの?


> for文を使えばいいのかdo while文を使えばいいのかというところから
と言っているが、そのループを「どこで(何に)」使おうとしてるの?

問題の分解
問題はより単純な複数の問題に分解できる。
この場合は、
・3つの数字(数値)を入力させる
・3つの数値のうち最大のものを探す
という二つに分けられるね。
それぞれ単独の問題としては出来るのか?
出来ないのであれば何が分からないのか?
一度整理してください。

あと!
ここで回答に書かれたプログラムを実行して動いたらそれで終わり、何てことはしないように。
    • good
    • 0

シンプルに徹するのであれば、



int max(int a, int b, int c)
{
if (a < b) a = b;
if (a < c) a = c;
return c;
}

あたりで良いのではないかと思います。
4個(以上)への拡張や、(配列を使った)多数個への拡張の道筋もつけやすいでしょう。
    • good
    • 0

とても初級の課題と見受けられますので対象を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;
}
が分かりやすいかと
対象の数を増やす、同じ値が入力されたときに別の動作をさせるなどが次の課題として予想されます。
    • good
    • 0

任意の個数なら:



#include <algorithm>

int max(int* array, int n) {
 return *std::max_element(array, array+n);
}

おしまい。
    • good
    • 0

3つなら:


int max(int x, int y, int z) {
 result ← x と y の大きい方
 result ← result と z の大きい方
 return result;
}

おしまい。
    • good
    • 0

//やりかたは、色々あると思いますが、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;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!