Frage

Ich mag die getch Funktion verwenden, um ein Zeichen zu bekommen ... Also die Benutzer nur Y oder N Zeichen eingeben .. aber die while-Schleife nicht funktioniert ... Ich brauche Hilfe! Dank

#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();
}
War es hilfreich?

Lösung

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

Sie müssen verwenden && statt || Hier. Angenommen, Sie haben ‚Y‘ eingegeben. So ersten Test yn! = 'Y' ist falsch, aber der 2. Test yn! = 'Y' ist wahr. So ist die Bedingung erfüllt, wie sie verodert werden. Deshalb wird die Schleife erneut eingeben.

Andere Tipps

Sie meinen && nicht ||.

Die Variable "yn" ist ein Zeichen. Für diesen Ausdruck auf falsch zu beurteilen, wäre das Zeichen Y, Y, n und n gleichzeitig aufweist, sein, die nicht möglich ist.

Sie brauchen:

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

Die Logik in der while-Anweisung fehlerhaft ist, müssen Sie logische AND (&&) anstelle von logischen OR (||).

Auch wäre dies ein guter Ort, um den Einsatz zu tun {...} while ();

Die Bedingung für die while Schleife verschachtelte OPs. Denn es möchten Sie vielleicht arbeiten sie in ANDs ändern:

do {
   yn = getch()
} while(yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n');
//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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top