2009年7月4日土曜日

第6回 ifとブロック複合文と論理演算子 [解答済]

お題:
日本の単位とSI単位を調べるプログラムを作る
①はじめに、「日本の単位」か「SI単位」かを選ばせる。
②10の何乗が知りたいかを尋ね、その単位が何なのかを表示する
③1から10の12
乗まで対応する
注意!例えば10の5乗を万、10の7条をM(メガ)としてください!!

プログラム実行例

どちらが知りたいか選んでよね。
1.日本の単位
2.SI単位
知りたい単位は:1(例)

10の何乗が知りたいのか書いてよね。
10の何乗?:9
それは億ね。

10の何乗が知りたいのか書いてよね。
10の何乗?:5
それは万ね。

10の何乗?:100000
それは知らない。

10の何乗?:-0120444444
それは知らない。

必須事項
・if () { } else { } を使う。
・論理演算子 && || を使う。

if () { } else { }の{}はブロック(複合文)といって、2行以上の命令を含む時に使います。論理演算子はifの条件で使います。使い方は以前つかった演算子と同じです。意味を調べて、よく覚えておいてください。

単位についてはこちらを参考にしてください。USEDしてる人にはお馴染み単位だと思います

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

解答、質問はこちらまで。
cosmo-cleaner@za.pial.jp

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

解答

解答例は以下の通りです。

1

2
3
4

5
6
7

8
9
10
11

12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46

#include <stdio.h>

int main () {
    int a;    //どちらの単位が知りたいか
    int b;    //10のb乗

    puts("どちらが知りたいか選んでよね");
    puts("1.日本の単位 2.SI単位\n");
    printf("知りたい単位は:");    scanf("%d",&a);
   
    if ( a < 1 || 2 < a) {
        puts("指示通りに答えてね");
        return (0);
    }


    puts("10の何乗が知りたいのか書いてよね。");
    printf("10の何乗?:");    scanf("%d",&b);

    if (a==1) {
        if ( b==1 )
            { puts("それは十ね。"); }
        else if (b==2)
            { puts("それは百ね。"); }
        else if (b==3)
            { puts("それは千ね。"); }
        else if (3 < b && b < 8)
            { puts("それは万ね。"); }
        else if (7 < b && b < 12)
            { puts("それは億ね。"); }
        else if (b==12)
            { puts("それは兆ね。"); }
        else
            { puts("それは知らない。"); }
    }

  
else if (a==2) {
        if ( b==1 )
            { puts("それはdaね。"); }
        else if ( b==2 )
            { puts("それはhね。"); }
        else if ( 2 < b && b < 6 )
            { puts("それはkね。"); }
        else if ( 5 < b && b < 9 )
            { puts("それはMね。"); }
        else if ( 8 < b && b < 12 )
            { puts("それはGね。"); }
        else if ( b == 12 )
            { puts("それはTね。"); }
        else
            { puts("それは知らないっす。");}
    }

}   

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

どちらが知りたいか選んでよね
1.日本の単位 2.SI単位

知りたい単位は:2
10の何乗が知りたいのか書いてよね。
10の何乗?:5
それはkね。

解説

まず、どの単位が知りたいのか聞きます。プログラムの茶色い部分では、答える人間が1と2以外を入力したときに、「指示通りに答えてね」と表示し、プログラムを終了するようになっています。ここで、論理OR演算子を利用しています。

論理OR演算子 a || b 
aとbどちらかが成り立たてば非0、成り立たなければ0

また、10行目のreturn(0);を入れることによって、プログラムを終了させることができまう。便利なので覚えておいてください。

赤い部分では、a=1、つまり日本の単位についてのプログラムです。ここで論理AND演算子を利用しています。

論理AND演算子 a && b
aとbどちらも成り立てば非0、成り立たなければ0

ちなみに、ifの条件で、例えば( 3 < b < 8 )とすると、プログラムが成り立ちません。気を付けてください。試してみると面白いです。

青い部分では同様にSI単位についてのプログラムです。

今回1番解答が早かったのはKBやし君です。

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

2 件のコメント:

  1. あ...また間に合わなかった。寝てしまいました。今回はできそうだったのに。

    返信削除