Domanda

Voglio usare la funzione getch per ottenere un carattere ... Così l'utente può inserire solo Y o N carattere .. ma il ciclo while non funziona ... Ho bisogno di aiuto! Grazie

#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();
}
È stato utile?

Soluzione

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

È necessario utilizzare && invece di || Qui. Diciamo che avete inserito 'Y'. Quindi, prima prova yn! = 'Y' è falso, ma secondo yn prova! = 'Y' è vero. Quindi la condizione è vera, in quanto sono un OR. Ecco perché sta entrando di nuovo il ciclo.

Altri suggerimenti

Vuoi dire && Non ||.

Il "yn" variabile è un carattere. Per questo Un'espressione da valutare a false, quel carattere dovrebbe essere Y, Y, N, e n simultaneamente, il che è impossibile.

È necessario:

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

La logica del while è difettosa, è necessario AND logico (&&) al posto di OR logico (||).

Inoltre, questo sarebbe un buon posto per fare uso {...} while ();

La condizione per il ciclo while è OR nidificati. Per farlo funzionare si potrebbe desiderare di trasformarli in AND:

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top