パソコン活用研究シリコンバレー(C、C++、の活用研究)

繰り返し処理と条件分岐

=========================================================================================
繰り返し処理(for, while)や条件分岐(if, switch...case)についてもCとC++で特に相違はないようなので、C入門メモ
繰り返し処理と条件分岐をご参照下さい。
ここでは、文法的な解説は省いて、for, while, if, switch がC++でも同様に動作することの確認のみしておきます。
==========================================================================================

1 for, while, if, switchの動作確認プログラム

0以下の数値を入力すると10個の?を表示し、1〜9までの数値を入力すると、その値の個数の*を表示し、10以上
の数を入力すると、何も表示しない、というプログラムです。
for, while, if, switchを無理やり使ってみました。

0以下の数値を入力すると10個の?を表示するところはfor文を使い、
1〜9までの数値を入力すると、その値の個数の*を表示するところは、switch文で判定し、*の表示は関数draw
でwhile文を使って書いています。
9以下かどうかの判定と、「もう1回やるか」の判定はif文を使っています。

kiso.cpp
#include<iostream.h>

void draw(int);

main(){
char c;
int i, n;
cout<<"9以下の数値を入力"<<endl;
start:
cin>>n;
if (n<10) {
switch (n) {
case 1: draw(1); break; //breakで抜けないとdefault:の文も実行される
case 2: draw(2); break;
case 3: draw(3); break;
case 4: draw(4); break;
case 5: draw(5); break;
case 6: draw(6); break;
case 7: draw(7); break;
case 8: draw(8); break;
case 9: draw(9); break;
default:
for (i=0; i<=10; i++){cout<<"?";}
}}
cout<<endl;
cout<<"もう一度?(y)";
cin>>c;
if (c=='y' || c=='Y') goto start;
}

void draw(int n) {
int i;
i=0;
while (i<n) {cout<<"*"; i++;}
}

switch...case 文でひとつだけ注意しておく点です。
caseの判定で合致した時に、そのcaseで指定された文が実行された後、break文で抜け出さないと、
次のcaseの判定が実行され、defaultがあれば、最後にdefaultが実行されます。
従って、あるcaseの判定で合致した時に、switch文を抜け出し、次の命令文に飛ぶためにはbreak文を記述します。

実行中の様子
D:\bcc55>kiso
9以下の数値を入力
0
???????????
もう一度?(y)y
5
*****
もう一度?(y)Y
9
*********
もう一度?(y)y
10

もう一度?(y)n

D:\bcc55>




TopPage