私が使用している本 (さまざまな種類のループに関する章の要約) の演習では、ユーザーに単一の文字を入力するように継続的に要求するプログラムを作成するように指示されました。次の 2 つの仕様があります。
- 「$」文字が入力されると、プログラムは終了するはずです。
- プログラムは、入力された期間の数を集計し、プログラムの終了時に合計を出力する必要があります。基本的には、入力プロンプトをループする -> ピリオドをカウントする -> このカウントを表示し、「$」が入力されたときにプログラムを終了するという考え方です。
ここに私が持っているコードがあります:
// Takes character input, tallies periods, stops on dollar sign
#include <iostream>
using namespace std;
int main() {
char i; // input received
int j = 0; // counter for # of periods
cout << "This program will accept single-character entries and report the number of periods you've entered.\n";
for (;;) {
do {
cout << "Please enter a single character, using $ to stop: ";
cin >> i;
if(i == '.')
j++;
} while(i != '$');
if(i == '$')
cout << "Total number of periods entered is " << j << " .";
break;
}
return 0;
}
プログラムは正常に動作し、コードは効率的に見えます。間違っている場合は修正してください。私にとって奇妙に思えるのは、コードの大部分で無限の for{} ループが使用されていることです。この章ではこれを 1 回か 2 回使用したので、この方法でループ関数を作成する方法は、私が現在知っている唯一の方法です。
おそらくそれは言語の経験が浅いだけかもしれませんが、ここでのループの使用は(;;)
C ++での典型的な出来事ですか? パラメーターが定義されていないループを使用する構文は、私が必要としていたことには意味があるように思えますが、for(;;){} ブロック全体は依然として奇妙に見えます。