switch文でのメモ。P100
プログラムの間違いを見つける練習をしたい。
[ | 1 2 3 4 5 6 7 8 9 ]
と表示させたい。
間違ったプログラム
一回目のプログラムは以下の感じでやったが動かなかった。
#include <iostream>
int main()
{
int no = 9;
int re_no = 1;
int i, j;
int cross = 1;
for (i = 1; i <= no+cross; i++) { //最初の一行(設定項目) 必ずしも一つのループ内に入れるのが最適とは限らない。
switch (i) {
case 1: printf(" "); break;
case 2: printf(" |"); break;
default:printf("%3d", re_no); break;
}
re_no+=1;//iが三以上になれば、次回以降は1,2,3,4.....
}
}
ミスった結果は以下のような感じ。
| 3 4 5 6 7 8 9 10
1と2が表示されない。
なぜか?
re_noでわざわざ分けて変数を保存しているのに、ここではスイッチ文内に
re_no+=1;
を記述していないので、分けたにもかかわらず、1,2の時の動きがiと同じになってしまう。
正しいプログラム
#include <iostream>
int main()
{
int no = 9;
int re_no = 1;
int i, j;
int line = 2;
for (i = 1; i <= no+line; i++) { //最初の一行(設定項目) 必ずしも一つのループ内に入れるのが最適とは限らない。
switch (i) {
case 1: printf(" "); break;
case 2: printf(" |"); break;
default:printf("%3d", re_no);
re_no += 1; break; //iが三以上になれば、次回以降は1,2,3,4.....
}
}
}
//※cross→lineに変数名変更。
以上。