プロが教えるわが家の防犯対策術!

以下の問題が解けません。
わかる方、教えていただけないでしょうか?

・キーボードから3整数を読み込み,小さい順に出力せよ。

ヒント-------------------------------------------------
キーボードから読み込む変数をa,b,c,出力する変数をx,y,z(x<y<z)とするとよい かもしれない。

プログラムの構造は次のようになる。
#include <stdio.h>
int main() {
int a,b,c,x,y,z;
scanf("%d%d%d",&a,&b,&c);
...//ここが本体
printf("%d %d %d\n",x,y,z);
return 0;
}

もちろん,目的が達成されるなら,上の例のようにならなくても良い。 

A 回答 (7件)

>ヒント-------------------------------------------------


>キーボードから読み込む変数をa,b,c,出力する変数をx,y,z(x<y<z)とするとよい かもしれない。
の処理を実装するだけです。
a、b、cそれぞれを比較し、小さい順にx、y、zに入れる処理を作成するだけです。
この問題は、「比較」の条件分さえわかれば解けるものです。
「比較の制御文すらわからない」なら、それがわからないとはっきりと質問してください。
    • good
    • 0
この回答へのお礼

わかりにくい質問で申し訳ございませんでした。比較の制御文がわかりませんので教えていただけますでしょうか?

お礼日時:2009/05/21 18:39

#6さんへ比較は3回ですよ。

6回の比較とは書いていないはずですけど。一応全体ではなくif文の構成は考えてから書いてあります。
    • good
    • 0

>#5さん



>つまり(a>b かつ a>c)場合、または(b>aかつb>c)または(c>aかつc>b)ということ。

3数の大小関係を求めるのに、6回の比較が必要だということですか?
3回でいいはずですけれど…。
    • good
    • 0

qsortを使ってしまえば簡単だろうけど、おそらく出題者の意図としてはif文による条件作成の感じがする。


ゆえに入力されたa,b,cに対してif文で3行、入子構造のif文を書けといっているのではないかな?つまり(a>b かつ a>c)場合、または(b>aかつb>c)または(c>aかつc>b)ということ。単純な繰り返しだけれどif文とその条件作成という観点からすると、面白い問題かな(実作業では使わないだろうけど)。
    • good
    • 0

すでに指摘があるように、キーボードから直接入力する方法は、標準規格では規定されていません。

処理系もそうですが、質問の真意を補足してください。

また、通常キーボードから直接読み取れるのは、キーの押下状態やスキャンコード程度です。読み込む整数というのは、入力ポートの生の値やスキャンコードでよいのでしょうか?

> int main() {
> ...//ここが本体

これらから判断してC++だと思いますが、その認識であっていますか?
    • good
    • 0

出題内容は満たすはずだけど、このまま提出するとおそらく先生には怒られる回答例。

No.2さんの指摘はとりあえず置いておきます。

#include <stdio.h>
#include <stdlib.h>

int cmpint(const void *p, const void *q) {
return *((int *)p) - *((int *)q);
}

int main() {
int a,b,c,x,y,z;
int array[3];

scanf("%d%d%d",&a,&b,&c);

array[0] = a;
array[1] = b;
array[2] = c;
qsort(array, sizeof(array)/sizeof(int), sizeof(int), cmpint);
x = array[0];
y = array[1];
z = array[2];

printf("%d %d %d\n",x,y,z);
return 0;
}
    • good
    • 0

標準Cおよび標準C++に,キーボードから入力を受け付けるための方法は用意されていません。


# 標準入力はキーボードとは限らない。

このため,まずは環境 (OS,コンパイラ) を特定してください。
    • good
    • 0

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