文字列比較のプログラムの考え方(2)
この課題では2つの文字列で,先頭から3文字分の一致を検査する
文字列の一致状況を表す変数checkを導入
checkは0か1の2つの値しかとらず,1なら一致状態,0なら不一致状態を表す。
検査を開始する前にcheck=1にしておく。
0号室同士,1号室同士,というように順に,検査を開始して,不一致が見つかったら,check=0にする。
checkを1に戻す手段はないようにしておく。
検査が終了したら,checkの値に従って,"equal" または "not equal" を表示する。
/*検査*/ check=1; if (mystr1[0]!=mystr2[0]) check=0; if (mystr1[1]!=mystr2[1]) check=0; if (mystr1[2]!=mystr2[2]) check=0; |
このような形は,繰り返し構造になりそうなので同じ形の繰り返しにする。
「 int
ptr; /*検査する文字列配列の要素番号*/ 」を用意する。
/*検査*/ check=1; ptr=0; if (mystr1[ptr]!=mystr2[ptr]) check=0; ptr++; if (mystr1[ptr]!=mystr2[ptr]) check=0; ptr++; if (mystr1[ptr]!=mystr2[ptr]) check=0; ptr++; /*これは本来不要だが,形を整えるために書いてある*/ |
あるいは
/*検査*/ check=1; ptr=0; if (mystr1[ptr]!=mystr2[ptr]) { check=0; } ptr++; if (mystr1[ptr]!=mystr2[ptr]) { check=0; } ptr++; if (mystr1[ptr]!=mystr2[ptr]) { check=0; } ptr++; /*これは本来不要だが,形を整えるために書いてある*/ |
繰り返し回数は3回と決まっているのでfor文になる
/*検査*/ check=1; for (ptr=0; ptr<3; ptr++) { if (mystr1[ptr]!=mystr2[ptr]) check=0; } |
/*検査*/ check=1; for (ptr=0; ptr<3; ptr++) { if (mystr1[ptr]!=mystr2[ptr]) { check=0; } } |
/*検査*/ check=1; for (ptr=0; ptr<3; ptr++) { if (mystr1[ptr]!=mystr2[ptr]) { check=0; break; /*いちばん内側繰り返し構造からの脱出*/ } } |