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

・キーボードから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;
}

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q権勢順とはどのような意味ですか

行政の用語の中で、市町村などが持ち回りで役割の順番を決めるときに、権勢順(漢字が間違っているかもしれません)で決めましょう。とありますが、この権勢順とは何の意味なのでしょう?市町村ができた順ですか?それとも、人口の多い順なのでしょうか?
教えてください。お願いします。

Aベストアンサー

建制順、つまり成立した順番という意味です。通常、建制順と言う時には、県都以下、成立時期の早い順に他の市が続き、町村の順となります。各町村は都道府県で慣例的に行われている郡の並び順に従って、その中で配列されているようです。

Q{x = x>y ? x:y; return x;}

#include <iostream>
using namespace std;

inline int max(int x, int y){x = x>y ? x:y; return x;}

int main()
{
int num1, num2, ans;

cout << "2つの整数を入力して。\n";
cin >> num1 >> num2;

ans = max(num1, num2);

cout << "最大値は" << ans << "です。\n";

return 0;
}
の{x = x>y ? x:y; return x;}の部分の意味が解りません。

Aベストアンサー

inline int max(int x, int y){x = x>y ? x:y; return x;}
これを普通に関数で書くと

int max(int x, int y)
{
x = x>y ? x:y;
return x;
}

です。

x = 部分は右辺の結果が代入されます。これはわかりますよね。
x>y?x:y;
と書くと?より左にある条件式を判定し、その結果が真である場合は:で区切られた左側の値を、偽である場合は右の値を帰します。
x>yが真であればxを、偽であればyを返します。
それが、左辺値xに代入され、関数の戻り値として帰ります。

従って、2つの値をこの関数に入れると、大きいほうの値が帰ることになります。

Qアルファベットの並び順の意味

英語のアルファベットの並び順は
ABCDEFGHIJKLMNOPQRSTUVWXYZ
となっていて、母音と子音が分かれているでもなく調音位置の順に並ぶでもなく有声音無声音もばらばらです。
ギリシャ文字やキリル文字もほとんど同じ並び順ですが、この並び順に何か意味や必然性はあるのでしょうか?

Aベストアンサー

五十音、ハングル、デーヴァナーガリーなどは音節文字(音節が単位)で、ラテン文字、ギリシャ文字、キリル文字などの音素文字(一文字が音節を表さない)とは文字体系が違うからです。(一般的に文字の類型には三種類あって、上に挙げた音節文字と音素文字のほかに漢字などの表意文字があります)。

ちなみに日本語の五十音図の配列はインドの影響が強いです。インドのサンスクリットが中国を経由して仏教と共に日本に伝えられ、悉曇学(インドの音声に関する学問)が活発になりました。インド系文字は現在でもインド・東南アジアで広く使われています。インド系文字の祖先はブラーフミー文字といって、音節をベースにしていますので、ヨーロッパのセム語系のアルファベットを基礎としたアルファベットとは根本的に構造が違います。例えばフェニキア文字は母音を表す文字が無かったように、音節をベースにしてはいません。
http://www.aa.tufs.ac.jp/i-moji/(インド系文字について)

ハングルも1字が1音節を表す文字です。1446年に李朝第四代世宗が漢字が不便であると理由から制定したもので、音節をベースにしています。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%B0%E3%83%AB(ハングルについて)

また、フェニキア文字の並び順に必然性があったかを知ることは、史料が少ない点からも難しいと思います。

かなり大雑把に書いてしまいましたが、参考になれば幸いです。

五十音、ハングル、デーヴァナーガリーなどは音節文字(音節が単位)で、ラテン文字、ギリシャ文字、キリル文字などの音素文字(一文字が音節を表さない)とは文字体系が違うからです。(一般的に文字の類型には三種類あって、上に挙げた音節文字と音素文字のほかに漢字などの表意文字があります)。

ちなみに日本語の五十音図の配列はインドの影響が強いです。インドのサンスクリットが中国を経由して仏教と共に日本に伝えられ、悉曇学(インドの音声に関する学問)が活発になりました。インド系文字は現在で...続きを読む

Q絶対パスがx,y,zのファイル,ホルダを

c:\p.exeにドラッグしてc:\p.exeを実行したとき
[GetCommandLine()]
はどのようになるのでしょうか?
98se 95 Borland C++5.5 Comlierでは
["c:\p.exe" x y z]
になるのですが
Windows2000 + SP3, VC++ 6.0では
["c:\p.exe" "x" "y" "z"]
となるそうです
Me,Xp,NT,2000でBorland c++5.5 Compiler
ではどうのようになるのでしょうか?

Aベストアンサー

前回の質問の続きとして回答します。
(http://www.okweb.ne.jp/kotaeru.php3?q=543088)

次のようなプログラムにすれば、OSのバージョンに依存しないかと思いますがどうでしょうか?

---------------------------------------------------------
#include <windows.h>
#include <string>

int WINAPI WinMain(HINSTANCE , HINSTANCE, LPSTR, int) {
  
  char param[256], buf[256];
  char *p, *b;
  
  /*パラメータ取得とバッファ初期化*/
  strncpy(param, GetCommandLine() , sizeof(param));
  param[255] = '\0';
  memset(buf, 0, sizeof(buf));
  
  /*引用符の除去*/
  p = param, b = buf;
  while(*p != '\0') {
    if (*p != '\"') {
      *b++ = *p++;
    }
    else {
      p++;
    }
  }
  
  /*ファイル名の区切りを\nにする*/
  for(b = buf + 2; *b != '\0'; b++) {
    if ((*b == ':') && (*(b - 2) == ' ')) {
      *(b-2) = '\n';
    }
  }
  
  /*結果確認*/
  MessageBox(NULL, buf, "File Name", MB_OK);
  return 0;
}

前回の質問の続きとして回答します。
(http://www.okweb.ne.jp/kotaeru.php3?q=543088)

次のようなプログラムにすれば、OSのバージョンに依存しないかと思いますがどうでしょうか?

---------------------------------------------------------
#include <windows.h>
#include <string>

int WINAPI WinMain(HINSTANCE , HINSTANCE, LPSTR, int) {
  
  char param[256], buf[256];
  char *p, *b;
  
  /*パラメータ取得とバッファ初期化*/
  strncpy(param, GetCommandLine() ,...続きを読む

Q辞書で全く同じ読み方だけど漢字や意味が違う言葉の並び順について

こんにちは!
ちょっと気になったのですが、全く同じ読み方だけど漢字や意味が違う言葉ってありますよね?例えば『詩』と『死』など。辞書にはそういったものが全部載ってますが、そういう言葉の並び順ってどのように決められてるのでしょうか?字画でしょうか?でも稀に字画が全く同じ言葉もありますよね?
非常にどうでも良い質問なのですがもし答えの分かる方いらっしゃいましたら教えて下さい。

Aベストアンサー

「使用頻度」順です。

意味や用法(使い方)の多い方が先に来て、古い言葉などは後ろに来ます。

QC言語で f1(x,y)-f2(x,y) の式は

C言語で f1(x,y)-f2(x,y) の式ってどうなるか教えて下さい。お願いします。

Aベストアンサー

こーなるんじゃないかな?
机上だけでコンパイルしているわけではないので
ミスがあるかも。m(_"_)m
#XとYが動的に変化するグラフを求めたい訳ではないですよね?

#include <stdio.h>

int f1(int x,int y)
{
int z;
//目的の計算式

z=0

return z;
}
int f2(int x,int y)
{
int z;
//目的の計算式

z=0

return z;
}
main ()
{
int X,Y,Z;

X=0; // 好きな数字
Y=0; // 好きな数字


Z=f1(X,Y)-f2(X,Y);

printf("f1(X,Y)-f2(X,Y)=%d\n",Z)
}

Q(新約聖書)配列順の意味は?

1 手元の新約聖書は「マタイによる福音書」に始まって「ヨハネの黙示録」で終わっています。多分、世界共通なのだと推測しますが、この配列順は何を意味していますか。
2 最初に成立したのは何で、何時頃のことですか。
3 「福音書」と「手紙」はどう違いますか。

よろしくお願いします。

Aベストアンサー

まずイエスの生涯のお話(福音書)
次にイエス死後の初期教会の対応の歴史(使徒言行録)
そしてその初期教会の重要人物による手紙類
最後に一風変わった黙示録
この順番は必然というか当然だろうと思います。
詳しくはウィキペディアで、、
http://ja.wikipedia.org/wiki/%E6%96%B0%E7%B4%84%E8%81%96%E6%9B%B8

ただし、マタイ・マルコ・ルカ・ヨハネの福音書の順番の意味は意図的だと言われることがあります。前者3つ、つまり共観福音書について、同じ内容なのですが、しいていえば、
まず、成立年代が一番古く、簡潔に書かいてあるので、マルコを一番にすえるのが客観的にいいのではと思うのですが、実際はマタイが一番です。それは、マルコだと、使徒ペトロの告白的なところがあり(名前の由来はペトロの弟子マルコ)、当時の疑問的、批判的そして恥ずべき部分が書いてあります。それに比べマタイは旧約聖書を読んだ人への続編として、宗教的で情緒的です。ですからこのマタイを読んだ後、マルコを読めばマタイを読んだあとの思考のフィルターを通して読むことになるので、批判的部分はすんなりスルーすることになります。そして思考を理論的に書かれたルカで補強する。
スルーさせて、初めて読んだ人に変な疑心を抱かせないわけです。
こう言われることがあります。ただしかなり微妙だと思います。

まずイエスの生涯のお話(福音書)
次にイエス死後の初期教会の対応の歴史(使徒言行録)
そしてその初期教会の重要人物による手紙類
最後に一風変わった黙示録
この順番は必然というか当然だろうと思います。
詳しくはウィキペディアで、、
http://ja.wikipedia.org/wiki/%E6%96%B0%E7%B4%84%E8%81%96%E6%9B%B8

ただし、マタイ・マルコ・ルカ・ヨハネの福音書の順番の意味は意図的だと言われることがあります。前者3つ、つまり共観福音書について、同じ内容なのですが、しいていえば、
まず、成立年代...続きを読む

Qprintf("%d",func())はなぜ実行できないのか?

main(){
int i;
i = func();
printf("%d",i);
}

int func(){
return 1;
}

はちゃんと1が表示されるのになぜ、

main(){
printf("%d",func());
}

int func(){
return 1;
}

は1が表示されず変な値になってしまうんでしょうか?
funcのアドレスが表示されているんでしょうか?

よろしくお願い致します。

Aベストアンサー

使っているコンパイラですが、VC++でしょうか?
-85は16進でいうところのABです。(←恐らくこれはコンパイラがデバッグ用に埋め込んだ数値だと思います。リリースコンパイルでは落ちるか不定だと思います。)

main関数とfunc関数ですが別ソース、或いは別プロジェクトではないですか?
関数を呼ぶ場合、stdcallとcdeclというものがありますが、これが一致しないとスタックが壊れます。
もしVC++であれば試しに以下のコードでうまく動かないか試してください。

int _cdecl func();

int main()
{
printf("%d\n",func());
return 0;
}

int _cdecl func()
{
return 1;
}

Q建制順とはどんな意味なんでしょうか?

皆様のご教授をお願いいたします。
名前を並び替えるとき
建制順にすると聞きますが、
そもそも 建制順 とはどんな順番なのでしょうか?

Aベストアンサー

建制順というのは,「どの順番で並べるのかという,一応の順番を予め決めたもの」です。

例えば、会社の各部署を順に並べる時に、総務部、人事部、経理部、など、どこかで並べて記載する必要がある時はこの順番で、と予め定めた順番のことを指します。

Qvoid (*signal(int signum, void (*handler)(int)))(int);

の解釈を教えてください
最後の「(int)」については詳しくお願いします

Aベストアンサー

signalが

(1)1つ目の引数の型:int
(2)2つ目の引数の型:引数がintで戻り値がvoidである関数へのポインタ
(3)戻り値の型:引数がintで戻り値がvoidである関数へのポインタ(2と同じ)

を満たす関数である事を宣言しています。最後の(int)はsignalの戻り値の
関数ポインタがint型の引数を持つ事を示しています。

「引数がintで戻り値がvoidである関数へのポインタ」の型をHANDLERと表すと

HANDLER signal(int signum, HANDLER handler);

となります。


人気Q&Aランキング

おすすめ情報