Как зациклить запрос на ввод пользователем верных данных? - C (СИ)
Формулировка задачи:
Здравствуйте, вопрос такой: "Как в следующей программе зациклить запрос на ввод пользователем верных данных? Чтобы пока юзер не введет верное число, программа не переставала его об этом просить?" Код ниже. Заранее спасибо
#include "stdafx.h"
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
//funkciya factorial(n)
int factorial(int n)
{ int i,f; //f - factorial chisla n
for(i=1,f=1;i<=n;i++)
f*=i;
return f;
};
//glavnaya funkciya
int main()
{
int n; //chislo
printf("Vvedite chislo, factorial kotorogo nado vychislit\'\n");
scanf("%d",&n);
if (n>=0) printf("%d! = %d\n",n,factorial(n));
while (n < 0) {
printf("Kernel panic!Bad value! Prover\'te vvod\n\n");
printf("Vvedite chislo, factorial kotorogo nado vychislit\'\n");
scanf("%d",&n);
printf("%d! = %d\n",n,factorial(n));}
getch();
}Решение задачи: «Как зациклить запрос на ввод пользователем верных данных?»
textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
//funkciya factorial(n)
int factorial(int n)
{ int i,f; //f - factorial chisla n
for(i=1,f=1;i<=n;i++)
f*=i;
return f;
};
//glavnaya funkciya
int main()
{
int n; //chislo
printf("Vvedite chislo, factorial kotorogo nado vychislit\'\n");
scanf("%d",&n);
if (n>=0) printf("%d! = %d\n",n,factorial(n));
while (n < 0) {
printf("Kernel panic!Bad value! Prover\'te vvod\n\n");
printf("Vvedite chislo, factorial kotorogo nado vychislit\'\n");
scanf("%d",&n);
}
printf("%d! = %d\n",n,factorial(n));
getch();
}
Объяснение кода листинга программы
- Объявлены функции
factorial(n)иmain(). - В функции
main()объявлена переменнаяnтипаint. - Выводится сообщение с просьбой ввести число, для которого необходимо вычислить факториал.
- Используется функция
scanf()для ввода числа в переменнуюn. - Проверка: если число больше или равно нулю, то вычисляется и выводится факториал числа.
- Используется цикл
whileдля проверки: если число меньше нуля, то выводится сообщение об ошибке, предложение проверить ввод и цикл начинается заново. - После выхода из цикла вычисляется и выводится факториал числа.
- В функции
factorial(n)объявлены переменныеiиfтипаint. - Используется цикл
forдля вычисления факториала числаn. - Переменная
fинициализируется единицей. - Внутри цикла
forпеременнаяfумножается на текущее значениеi. - Функция
factorial(n)возвращает значение переменнойf. - В функции
main()используется функцияprintf()для вывода сообщения и вызова функцииfactorial(). - Используется функция
scanf()для ввода числа. - После выхода из цикла
whileвыводится факториал числа. - В функции
main()используется функцияgetch()для приостановки выполнения программы и получения ввода пользователя. - В функции
factorial(n)объявлены две переменные типаint. - В функции
main()используется функцияprintf()для вывода сообщения об ошибке. - В функции
main()используется циклwhile. - После выхода из цикла
whileвыводится факториал числа.