電話番号に変換された文字を入力するようにプログラムを呼び出そうとしています(これはうまくいきます)。同じ手順を繰り返します(ここではエラーが発生しています)。プログラムは電話番号を集計し、ユーザーにcin >>リピート文字を入力させずにただちにcoutステートメントを生成します。ループ機能が機能と組み合わされている問題がある
"あなたは電話番号を入力したいと思います:Y/N"
は、 "有効な入力を入力してください:Y/Nを"
私はコードの中で見るように、2つの間にcin >>を持っています。どのようにこれを得るための任意のアドバイスですか?前もって感謝します。
#include <iostream>
#include <string>
using namespace std;
void telephoneConverter();
int counter;
char phoneNumber;
int main()
{
char repeat;
telephoneConverter();
cout << endl
<< "Would you like to enter a phone
number: Y/N ";
cin >> repeat;
if (repeat == 'Y' || repeat == 'y') {
telephoneConverter();
}
if (repeat == 'N' || repeat == 'n') {
cout << "Have a good day.";
}
else
cout << "Please enter a valid input: Y/N.";
return 0;
}
void telephoneConverter()
{
cout << "\nEnter a phone number in letters
only."
<< endl;
for (counter = 0; counter < 7; counter++) {
cin >> phoneNumber;
if (counter == 3)
cout << "-";
if ((phoneNumber >= 'A' && phoneNumber
<= 'Z')
|| (phoneNumber >= 'a' && phoneNumber
<= 'z'))
switch (phoneNumber) {
case 'A':
case 'a':
case 'B':
case 'b':
case 'C':
case 'c':
cout << 2;
break;
case 'D':
case 'd':
case 'E':
case 'e':
case 'F':
case 'f':
cout << 3;
break;
case 'G':
case 'g':
case 'H':
case 'h':
case 'I':
case 'i':
cout << 4;
break;
case 'J':
case 'j':
case 'K':
case 'k':
case 'L':
case 'l':
cout << 5;
break;
case 'M':
case 'm':
case 'N':
case 'n':
case 'O':
case 'o':
cout << 6;
break;
case 'P':
case 'p':
case 'Q':
case 'q':
case 'R':
case 'r':
case 'S':
case 's':
cout << 7;
break;
case 'T':
case 't':
case 'U':
case 'u':
case 'V':
case 'v':
cout << 8;
break;
case 'W':
case 'w':
case 'X':
case 'x':
case 'Y':
case 'y':
case 'Z':
case 'z':
cout << 9;
break;
}
}
};
... – Drop
:まで
cin
ストリーム内の任意の文字を無視(および含む)/スキップ、repeat
に読み込む前に新しい行をこの問題を回避するには 'repeat 'を1回だけ入力し、それが' Y'ならば別の数を行いますが、 'repeat'をもう一度求めないでください。だからあなたが 'N'に対してテストを受けるとき、値は' Y'であり、拒否されます。 –はい、私もそれを変更しました。それを指摘してくれてありがとう。 –