Вопрос

Я хочу использовать функцию Getch, чтобы получить символ ... чтобы пользователь мог ввести только символ Y или N ... но цикл WHINE не работает ... Мне нужна помощь! Спасибо

#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();
}
Это было полезно?

Решение

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

Вам нужно использовать && вместо || здесь. Скажем, вы вошли «y». Итак, 1 -й тест yn! = 'Y' ложный, но 2 -й тест yn! = 'Y' это правда. Таким образом, состояние верно, так как они есть. Вот почему он снова входит в петлю.

Другие советы

Вы имеете в виду && не ||.

Переменная "yn" - один из символов. Для этого выражения, чтобы оценить ложь, этот персонаж должен быть y, y, n и n одновременно, что невозможно.

Тебе нужно:

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

Логика в операторе WHINE ошибочна, вам нужно логично и (&&) вместо логической или (||).

Кроме того, это было бы хорошим местом для использования do {...} while ();

Условие для while петля вложенная или Чтобы это работало, вы можете захотеть изменить их и и:

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top