2009年6月30日火曜日

C言語講座 第5回 ifと似てるよ条件演算子 [解答済]

お題:
①プログラム実行中に3つの”整数”(正負に対応)の入力を受け付け、一番大きい数字を表示させる。
②100と一番大きい数字との差を正の整数で表示させる。
注意:ifとelseは使ってはいけない。①、②とも条件演算子を用いたプログラムにせよ。

プログラム実行例

整数を3つ入力してください。
a:
b:
c:
一番大きい数字は:
一番大きい数字と100との差は:

必須文字列
・条件演算子 ___ ? ____ : ____

条件演算子の使い方をマスターしてください。うまく使うとプログラムを簡略化することが出来ます。

解答掲載は7月4日です。それまでに各自プログラムを作成し、
・プログラム文
・その実行ファイル
をメールに添付するか、8G以上云々して提出してください。

質問等はメールまたはコメントにて受け付けます。前回は解答者0だったので、今回は頑張って取り組んでください。

---------------------------------------------------------------

解答

解答例は以下の通りです

1

2
3
4
5
6
7
8

9
10
11

12
13
14
15

#include <stdio.h>

int main()
{
    int a,b,c,max,d;
    puts("3つの整数a,b,cを入力してください。");
    printf("a:");    scanf("%d",&a);
    printf("b:");    scanf("%d",&b);
    printf("c:");    scanf("%d",&c); 

    max = a;
    max = b > max ? b : max ;
    max = c > max ? c : max ;

    printf("一番大きい数字は:%d \n",max);
    d = max > 100 ? max - 100 : 100 - max ;
    printf("一番大きい数値と100との差は:%d \n",d);
}

実行例は以下の通りです。

3つの整数a,b,cを入力してください。
a:123
b:456
c:789
一番大きい数字は:789
一番大きい数値と100との差は:689

解説

_条件演算子の使い方についての問題です。条件演算子は次のように書きます。

式1  ?  式2  :  式3  ;

この意味は、「式1が非0なら式2を実行、式1が0なら式3を実行」となります。これをif文で表すとするなら、

if (式1) 式2; else 式3;

となります。

行番号9,10,11
一番大きな整数の選出ですが、まず、とりあえずaを一番大きいと仮定します。次にaとbを比べて、どちらか大きい方をmaxとします。cも同様に比べると、最終的に一番大きい数字がmaxに代入されます。

行番号13
ここでは、maxと100との差を求めています。差なので負にはなりません。なので条件演算子で「max>100ならmax-100、それ以外なら100-max」としています。それ以外の場合には、max=100も入ります。

_差を求める専用の関数もあります。それはabs関数といい、

A=abs(max-100);

と表すことも出来ます。しかし、abs関数を使うには、abs関数が乗ってる辞書、つまり「ライブラリ」がないと、コンピュータは分かってくれません。そのため、プログラムの頭(ヘッダという)に

#include <stdlib.h>

と書きくわえなければなりません。このように、#includeはコンピュータに使う辞書を指定する役割を持っています。stdlib.hが辞書にあたります。

_今回1番解答が早かったのはK林君です。

答えられる範囲で質問受け付けます。
cosmo-cleaner@za.pial.jp

0 件のコメント:

コメントを投稿