Прерывание работы программы словом "exit" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Дано задание - ввод 10 целых чисел с клавиатуры. Провести провекру, чтобы не было введена буква вместа числа. И если пользвователь вводит слово "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"!

Решение задачи: «Прерывание работы программы словом "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;
}

Объяснение кода листинга программы

  1. Объединение , и позволяет использовать функции для ввода-вывода, работы с массивами и обработки строк соответственно.
  2. Определение размера массива size и его использование в цикле for для перебора элементов.
  3. Объявление переменных i, p, digit, k и str.
  4. Использование ok как флага корректности ввода.
  5. Ввод каждого числа в отдельной итерации цикла for с использованием do-while для повторного запроса ввода при некорректном вводе.
  6. Использование scanf для ввода строки и sscanf для преобразования строки в число.
  7. Проверка введенной строки на равенство exit.
  8. Если введена строка exit, выводится сообщение exit now и возвращается EXIT_SUCCESS.
  9. Если введенное значение не является числом, выводится сообщение Invalid input.
  10. После завершения ввода всех чисел выводится сообщение с введенными числами.
  11. Возвращается EXIT_SUCCESS после завершения программы.
  12. Комментарий getch() был оставлен для возможного использования в будущем, но не используется в данном коде.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы