"if"및 "while"문에 3 개의 값만 허용하여 루프를 종료하는 방법

kuthedk

나는 단지 몇 가지 논리 진술에 갇혀 있습니다.

특히 함수에있는 char GetInteger()것이므로 3 개의 값만 루프를 종료하도록 허용하는 방법은 무엇입니까?

char GetInteger( /* out */ char& usrinput)
{
    do
    {
        cin >> usrinput;
        cin.ignore(200,'\n');
        if (usrinput != 0 || usrinput != 1 || usrinput != 2)
        {
            cout << "Invalid Input." << userinput << " Try Again\n";
        }

    } while(usrinput != 0 || usrinput != 1 || usrinput != 2);

    return userInput;
}
마틴 요크

이 코드의 두 가지 문제 :

먼저 userinput문자 유형이 있습니다. 따라서 스트림에서 읽을 때 공백을 삭제 한 후 단일 문자를 읽습니다. 따라서 사용자 1<enter>가 입력하면 변수에 '1'문자가 표시 userinput됩니다. 문자 '1'는 숫자와 동일하지 않습니다 1.

따라서 테스트는 다음과 같아야합니다.

userinput != '1';

둘째, 부울 논리가 잘못되었습니다. 처음 학습 할 때 문제를 받아 들일 수있는 값 목록 (용납 할 수없는 값이 아님)으로 설명하는 것이 더 쉽습니다.

userInput에 허용 된 값 중 하나가 있으면 조건이 false가되기를 원합니다 (좋은 값은 테스트에 실패하므로 잘못된 코드를 호출하지 않습니다). 이에 대한 첫 번째 단계는 값이 유효한 경우 true를 얻는 것입니다.

// If any value is good then true.
userinput == '1' || userinput == '2' || userinput == '3'

이것을 반전하려면 not표현식 에 a 추가하십시오 .

if (! (userinput == '1' || userinput == '2' || userinput == '3') )

참고 : 부울 논리

!(A || B)   =>  (!A && !B)

따라서 위의 내용을 다음과 같이 다시 작성할 수 있습니다.

if (userinput != '1' && userinput != '2' && userinput != '3')

나는 이것이 당신이 변환 된 메인 실수 생각 ==으로 !=하지만 변환하지 않았다 ||로를 &&.

나는 또한 이것을 범위 기반 테스트로 변환하여 (더 유효한 결과를 얻을 수 있으므로) 이것을 단순화 할 수 있다고 제안합니다.

 if (userinput < '1' || userinput > '3')
 {
      // Test Failed.
 }

또한. 두 곳에서 시험이 있기 때문에. 당신은 그것을 자신의 기능으로 끌어 당겨야합니다. 그런 다음 함수를 호출하여 테스트를 수행 할 수 있습니다.

 bool isUserInputValid(char userInput)
 {
     return userInput >= '1' && userInput <= '3';
 }

이제 원래 함수를 다음과 같이 다시 작성할 수 있습니다.

char GetInteger( /* out */ char& usrinput)
{
    do
    {
        cin >> usrinput;
        cin.ignore(200,'\n');
        if (!isUserInputValid(userinput))
        {
            cout << "Invalid Input." << userinput << " Try Again\n";
        }

    } while(!isUserInputValid(userinput));

    return userInput;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

while 및 for 루프를 사용할 때 String Array의 개별 값에 액세스하고 조작하는 방법

분류에서Dev

R에서 3 개의 for 루프를 사용하여 행렬의 값을 증가시키는 방법

분류에서Dev

C의 While 루프는 Repl.it에서 종료되지만 gcc를 사용하여 로컬에서 실행될 때는 종료되지 않습니다.

분류에서Dev

루프 내의 중첩 if 문에서 while 루프를 종료하는 방법은 무엇입니까? (아마 쉽게)

분류에서Dev

수학을 망치지 않는 문자로 숫자를 사용하는 while 루프를 종료하는 방법

분류에서Dev

R의 루프 내에서 시작 및 종료 값을 사용하는 샘플

분류에서Dev

3 개의 다른 테이블이있는 while 루프를 사용하여 데이터베이스의 특정 열을 에코하는 방법

분류에서Dev

스캐너를 사용하여 문자열 이름을 늘리는 방법, Java에서 while 및 for 루프

분류에서Dev

CASE를 사용하여 SQL의 값 비교, 일치하는 경우 CASE 문에서 반환 및 종료

분류에서Dev

r의 rev () 및 루프를 사용하여 목록에 적용하는 방법

분류에서Dev

사용자가 입력 한 문자열로 do while 루프를 종료하는 방법은 무엇입니까?

분류에서Dev

WHILE 루프 내부에서 FOREACH 루프를 사용하여 여러 열을 만드는 방법

분류에서Dev

while 루프를 사용하여 두 개의 입력 파일에서 읽는 방법

분류에서Dev

while 루프를 사용하여 두 개의 입력 파일에서 읽는 방법

분류에서Dev

Java에서 중첩 루프를 사용하여 2x2 및 3x3 행렬의 문자열 값을 반환하는 수학 곱셈 테이블을 인쇄하는 방법

분류에서Dev

C #에서 while 루프를 종료하는 방법. 작동하지 않는 휴식

분류에서Dev

콘솔 앱에서 Windows 메시지 루프를 종료 / 중단하는 방법 및 Windows 데스크톱 앱의 종속성은 무엇입니까?

분류에서Dev

Python : 중첩 된 for 루프를 사용하여 배열에 값을 올바르게 저장하는 방법 (3 개 루프, 3 차원 배열)?

분류에서Dev

스크립트에서 3 개의 for 루프를 하나만 다시 배열하는 방법

분류에서Dev

사용자가 while 루프를 종료하도록하는 방법

분류에서Dev

파이썬에서 두 개의 루프를 사용하여 여러 행을 만들고 추가하는 방법

분류에서Dev

Python에서 단일 for 루프를 사용하여 3 개의 다른 배열을 반복하는 방법

분류에서Dev

for 및 while 루프를 사용하여 R에서 서로 다른 길이의 범위 만들기

분류에서Dev

저장 프로 시저를 사용하여 루프에서 SQL 열의 값을 구문 분석하는 방법

분류에서Dev

Linux에서 백그라운드 while 루프를 종료하는 방법은 무엇입니까?

분류에서Dev

C에서 While 및 do while 루프 만 사용하여 5 개의 숫자와 N 개의 숫자의 평균 찾기

분류에서Dev

JAVA에서 세 개의 foreach 루프를 사용하여 단일 3 요소 컬렉션 목록을 만드는 방법.?

분류에서Dev

Javascript : 조건이 충족 될 때 while 루프를 중단하여 Var이 null이 아닐 때 루프가 종료되도록 만드는 방법 (Break Not Working

분류에서Dev

while 루프에서 여러 개의 if 및 elif 문을 사용하면 작동하지 않습니다.

Related 관련 기사

  1. 1

    while 및 for 루프를 사용할 때 String Array의 개별 값에 액세스하고 조작하는 방법

  2. 2

    R에서 3 개의 for 루프를 사용하여 행렬의 값을 증가시키는 방법

  3. 3

    C의 While 루프는 Repl.it에서 종료되지만 gcc를 사용하여 로컬에서 실행될 때는 종료되지 않습니다.

  4. 4

    루프 내의 중첩 if 문에서 while 루프를 종료하는 방법은 무엇입니까? (아마 쉽게)

  5. 5

    수학을 망치지 않는 문자로 숫자를 사용하는 while 루프를 종료하는 방법

  6. 6

    R의 루프 내에서 시작 및 종료 값을 사용하는 샘플

  7. 7

    3 개의 다른 테이블이있는 while 루프를 사용하여 데이터베이스의 특정 열을 에코하는 방법

  8. 8

    스캐너를 사용하여 문자열 이름을 늘리는 방법, Java에서 while 및 for 루프

  9. 9

    CASE를 사용하여 SQL의 값 비교, 일치하는 경우 CASE 문에서 반환 및 종료

  10. 10

    r의 rev () 및 루프를 사용하여 목록에 적용하는 방법

  11. 11

    사용자가 입력 한 문자열로 do while 루프를 종료하는 방법은 무엇입니까?

  12. 12

    WHILE 루프 내부에서 FOREACH 루프를 사용하여 여러 열을 만드는 방법

  13. 13

    while 루프를 사용하여 두 개의 입력 파일에서 읽는 방법

  14. 14

    while 루프를 사용하여 두 개의 입력 파일에서 읽는 방법

  15. 15

    Java에서 중첩 루프를 사용하여 2x2 및 3x3 행렬의 문자열 값을 반환하는 수학 곱셈 테이블을 인쇄하는 방법

  16. 16

    C #에서 while 루프를 종료하는 방법. 작동하지 않는 휴식

  17. 17

    콘솔 앱에서 Windows 메시지 루프를 종료 / 중단하는 방법 및 Windows 데스크톱 앱의 종속성은 무엇입니까?

  18. 18

    Python : 중첩 된 for 루프를 사용하여 배열에 값을 올바르게 저장하는 방법 (3 개 루프, 3 차원 배열)?

  19. 19

    스크립트에서 3 개의 for 루프를 하나만 다시 배열하는 방법

  20. 20

    사용자가 while 루프를 종료하도록하는 방법

  21. 21

    파이썬에서 두 개의 루프를 사용하여 여러 행을 만들고 추가하는 방법

  22. 22

    Python에서 단일 for 루프를 사용하여 3 개의 다른 배열을 반복하는 방법

  23. 23

    for 및 while 루프를 사용하여 R에서 서로 다른 길이의 범위 만들기

  24. 24

    저장 프로 시저를 사용하여 루프에서 SQL 열의 값을 구문 분석하는 방법

  25. 25

    Linux에서 백그라운드 while 루프를 종료하는 방법은 무엇입니까?

  26. 26

    C에서 While 및 do while 루프 만 사용하여 5 개의 숫자와 N 개의 숫자의 평균 찾기

  27. 27

    JAVA에서 세 개의 foreach 루프를 사용하여 단일 3 요소 컬렉션 목록을 만드는 방법.?

  28. 28

    Javascript : 조건이 충족 될 때 while 루프를 중단하여 Var이 null이 아닐 때 루프가 종료되도록 만드는 방법 (Break Not Working

  29. 29

    while 루프에서 여러 개의 if 및 elif 문을 사용하면 작동하지 않습니다.

뜨겁다태그

보관