Прерывание работы программы словом "exit" - C (СИ)
Формулировка задачи:
Добрый день!
Дано задание - ввод 10 целых чисел с клавиатуры.
Провести провекру, чтобы не было введена буква вместа числа.
И если пользвователь вводит слово "exit" программа завершает работу.
Вот что у меня получилось
Помогите вставить прерывание программы словом "exit"!
#include <stdio.h> #include <stdlib.h> #define size 10 int main() { int i,p; int digit[size]; int k=0; for ( i=0; i<size; i++){ printf("Vvedite %d. cislo: ", i+1); fflush(stdin); if(scanf("%i",&digit[i])!=1){ i=i-1; puts("Invalid input");} } puts("Vi vveli sledujusije cisla: "); for ( i=0; i<size; i++){ printf("%d\t",digit[i]);} getch(); }
Решение задачи: «Прерывание работы программы словом "exit"»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> // функции для работ со строками #define size 10 int main() { int i,p; int digit[size]; int k=0; char str[0x42]; int ok = 0; // флаг корректности ввода (ok !=0) -> ввод корректен for ( i=0; i<size; i++){ do { printf("Vvedite %d. cislo: ", i+1); fflush(stdin); ok = scanf("%s",str); // сначала вводим строку if(ok == 0) { puts("Invalid input"); return EXIT_FAIL; } else { if (strcmp("exit", str) == 0) { // пользователь ввёл exit puts("exit now"); return EXIT_SUCCESS; } ok = sscanf(str, "%i", digit + i); // получаем число из строки if(ok == 0){ puts("Invalid input"); } } } while (ok == 0); // пока ввод не корректен } puts("Vi vveli sledujusije cisla: "); for ( i=0; i<size; i++){ printf("%d\t",digit[i]); } /*getch();*/ return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Объединение
, и позволяет использовать функции для ввода-вывода, работы с массивами и обработки строк соответственно. - Определение размера массива
size
и его использование в цикле for для перебора элементов. - Объявление переменных
i
,p
,digit
,k
иstr
. - Использование
ok
как флага корректности ввода. - Ввод каждого числа в отдельной итерации цикла for с использованием
do-while
для повторного запроса ввода при некорректном вводе. - Использование
scanf
для ввода строки иsscanf
для преобразования строки в число. - Проверка введенной строки на равенство
exit
. - Если введена строка
exit
, выводится сообщениеexit now
и возвращается EXIT_SUCCESS. - Если введенное значение не является числом, выводится сообщение
Invalid input
. - После завершения ввода всех чисел выводится сообщение с введенными числами.
- Возвращается EXIT_SUCCESS после завершения программы.
- Комментарий
getch()
был оставлен для возможного использования в будущем, но не используется в данном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д