Как проверить, что ввод не является алфавитом/символом и циклом, если вы хотите продолжить
Требование:
1. попросите пользователя ввести значение x, y, z для математического уравнения
2. проверьте, что значение не является алфавитом - спросите, хотите ли вы повторно ввести его
3. вычислите ответ, если все входные данные являются числовыми
3. цикл, когда пользователь хочет продолжить для следующего ввода
Проблема:
Запустите его и выясните, может ли вводиться бесконечный без выполнения другого кода. когда ключ в значении для x, y, z
1. можно ввести бесконечное число, когда входное число является целым
Введите действительное число X:
Введите действительное число Y:
Введите действительное число Z:
1
1
1
1
2. при вводе алфавитного кода продолжайте цикл до тех пор, пока printf () не продолжится
Введите действительное число X:
Введите действительное число Y:
Введите действительное число Z:
Введенное значение не является числовым
Продолжить (Y/N)? y
Введите действительное число X:
Введите действительное число Y:
Введите действительное число Z:
Введенное значение не является числовым
Продолжить (Y/N)?
3. после этого попытался ввести целое число, затем алфавит, затем целое число, так или иначе оно может работать до конца
Введите действительное число X:
Введите действительное число Y:
Введите действительное число Z:
Введенное значение не является числовым
Продолжить (Y/N)? 1
1
1
1
1
1
ф
Введенное значение не является числовым
Продолжить (Y/N)? 1
1
1
X=1.0000; Y=1.0000 ; Z=1.0000
ф(х,г): -8.0000; г(х,Z): 0.0000; ч(Х,У,Z): -инф
Вы хотите продолжить Y/N:
Что я уже пробовал:
do { printf("Enter real number X: \n"); //scanf("%f",&X); printf("Enter real number Y: \n"); //scanf("%f",&Y); printf("Enter real number Z: \n"); //scanf("%f",&Z); while(1) { if (scanf("%f%f%f", &X,&Y,&Z) != 3) { printf("Entered value is not numeric\n"); printf("Continue (Y/N)? "); scanf(" %c", &choice); } if ((choice != 'Y') && (choice != 'y')) break; } if(scanf("%f%f%f", &X, &Y, &Z) == 3) { //continue to calculate the equation and print result }
Leo Chapiro
А в чем, собственно, проблема с нынешним решением?
JiaWei Lee
Бесконечный ввод входных данных, если все числовые по праву только 3
Затем при вводе алфавита код зацикливается снова и снова, показывая printf ( попросите продолжить)
Я описал ситуацию в вопросе