전화 번호로 변환 할 문자를 입력하라는 프로그램을 얻고 (원하는 경우) 사용자에게 메시지를 표시하려고합니다. 동일한 단계를 반복하십시오 (여기는 오류가 발생하는 곳입니다). 이 프로그램은 전화 번호를 변환 한 다음 사용자가 cin >> repeat 문자를 입력하지 않고 즉시 cout 문을 생성합니다.루프가 작동하는 데 문제가있는 경우
이:
는 "Y/N 당신은 전화 번호를 입력 하시겠습니까" "유효한 입력 입력하십시오. Y/N을"
코드에서 볼 수 있듯이 두 가지 사이에 >>가 있습니다. 이 방법을 얻는 방법에 대한 조언이 있으십니까? 미리 감사드립니다.
#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
을 'repeat '를 한 번만 입력하면'Y '이면 다른 번호를 쓰지만 결코'repeat'를 다시 요구하지 않습니다. 따라서 'N'에 대한 테스트를 수행하면 값은 여전히 'Y'이며 거부됩니다. –
네, 저도 바꿨습니다. 그 점을 지적 해 주셔서 감사합니다. –