2010-12-02 1 views
4
내가 문자를 얻기 위해 getch 기능을 사용하려면

에 도움이 ... 그래서 사용자는 Y 또는 N 문자를 입력 할 수 있습니다 ..하지만 while 루프가 작동하지 않습니다 ... 나는 도움이 필요 해요! 감사합니다getch() 함수

#include <stdio.h> 
main(){ 
    char yn = 0; 
    printf("\n\t\t Save changes? Y or N [ ]\b\b"); 
    yn = getch(); 
    while (yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n') { //loop is not working 
     yn = getch(); 
    } 
    if (yn=='Y' || yn=='y') printf("Yehey"); 
    else printf("Exiting!"); 
    getch(); 
} 
당신은 대신 & &를 사용할 필요가
+1

작동하지 않습니다, 또는 어떤 노력이 문제를 해결하기 위해 만든 방법을 설명하는 것이 도움이 될 것입니다. – wj32

+1

표현식'x! = A || x! = B'는 항상 참입니다. 'x'는 하나 개의 값 : – ruslik

답변

5
yn != 'Y' || yn != 'y' || yn != 'N' || yn != 'n'

|| 이리. 'Y'를 입력했다고 가정 해보십시오. 따라서 첫 번째 테스트 yn! = 'Y'는 거짓이지만 두 번째 테스트 yn! = 'y'는 참입니다. 따라서 조건은 ORed이므로 true입니다. 이것이 루프에 다시 들어가는 이유입니다.

+0

내가 사용하는 경우에도 && ... 여전히 – newbie

+0

그 코드를 게시하시기 바랍니다 작동하지 않습니다 있습니다. 실수를 저 지르고있는지도 모르겠다. 좋은 설명을 위해 – taskinoor

1

당신은 & &이 ||하지 의미한다.

변수 "아니오"

한 문자입니다. 그 표현식이 거짓으로 평가되기 위해서는 해당 문자가 Y, Y, N 및 n 동시에 있어야하며 이는 불가능합니다.

당신이 필요합니다 : while 문에서 논리가 결함이

while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N') 
+0

+1. – taskinoor

+0

그리고 명백한 이유없이 다른 누군가로부터 -1. 나는 내가 누구인지 알 것 같아. – AlastairG

1

, 당신은 논리적 AND 필요 (& &) 대신 논리적 OR의 (||).

또한,이 동안() 할 {...} 사용하기에 좋은 장소가 될 것입니다;

1

while 루프 조건 중첩 논리합이다. 이 일을 위해 당신은 AND 연산으로 그들을 변경할 수 있습니다 :

do { 
    yn = getch() 
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n'); 
1
//use of getch() function 
#include<iostream.h> 
#include<conio.h> 
//main function starts excuition 
viod main() 
{ 
clrscr();//to clear the screen 
//veriable decleration 
int a;//Any integer 
int b;//Any integer 
int c;//Any integer 
cout<<"Enter the first number\n";//prompt 
cin>>a;//read the integer 
cout<<"Enter the second number\n";//prompt 
cin>>b;//read integer 
c = a + b;//the value of xum of "a" and "b" is assigned to "c" 
cout<<"sum is\t"<<c; 
getch();//to stay the screen 
}