Программирование на С. двойной запрос ввода - C (СИ)

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

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

Здравствуйте! Когда нужно ввести значение N, если ввести какую-то букву, то программа виснет. Нужно поставить ограничение на ввод исключительно чисел (что бы буквы вводить было нельзя) Нашла в сети такой нехитрый способ и у себя на сроке 27 применил его. проблема решилась- если ввести букву, то выползает предупреждение как и полагается, НО если вводишь число, то что бы программа сработала его нужно ввести два раза. Раньше, (до этого способа запрета на буквы) Нужно что бы после ввода числа, нажал интер, и программа сразу отработала, а теперь приходится ввести число, нажать интер, после чего тебя перебрасывает на новую строку, потом еще раз ввести число, нажать интер и только после этого она отработает.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
int main()
{
        int i = 0;
        int j = 0;
        int N = 0;
        unsigned int mass[21];
 
        printf("Vvedite znachenie massiva ot 8 do 20: ");
        scanf_s("%d",&i);
        printf("\n");
 
        if ((i < 8) || (i>20)){
                printf("Error! razmernost zadana neverno!\n");
                printf("Press any key to exit");
                _getch();
                exit(0);
        }
        printf("Vvedite chislo N: ");
        scanf_s("%d", &N);
        printf("\n");
 
        if (scanf_s("%d", &N) != 1){
                printf("Error! razmernost zadana nevernooo!\n");
                printf("Press any key to exit");
                _getch();
                exit(0);
        }
        else{
 
                for (j = 0; j <= i; j++){
                        mass[j] = rand() % N;
                }
        }
 
        for (j = 0; j <= i; j++){
                printf("mass[ %d", j);
                printf("]= %d", mass[j]);
                printf("\n");
        }
        printf("Press any key to exit");
        _getch();
}

Решение задачи: «Программирование на С. двойной запрос ввода»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
int main()
{
        int i = 0;
        int j = 0;
        int N = 0;
        unsigned int mass[21];
 
        printf("Vvedite znachenie massiva ot 8 do 20: ");
        if (scanf_s("%d",&i) != 1) {
                printf("Error! razmernost zadana nevernooo!\n");
                printf("Press any key to exit");
                _getch();
                exit(1);
        }
        printf("\n");
 
        if ((i < 8) || (i>20)){
                printf("Error! razmernost zadana neverno!\n");
                printf("Press any key to exit");
                _getch();
                exit(1);
        }
        printf("Vvedite chislo N: ");
        //scanf_s("%d", &N); //- лишняя строка
        //printf("\n"); - это тоже необязательно после Enter и так перевод строки будет
 
        if (scanf_s("%d", &N) != 1) { // Вы же тут вводите N 
                printf("Error! razmernost zadana nevernooo!\n");
                printf("Press any key to exit");
                _getch();
                exit(1);
        }
       // else{ //не нужен, т.к. в случае ошибки вы закрываете программу
 
                for (j = 0; j <= i; j++){
                        mass[j] = rand() % N;
                }
       // }
 
        for (j = 0; j <= i; j++){
                printf("mass[ %d", j);
                printf("]= %d", mass[j]);
                printf("\n");
        }
        printf("Press any key to exit");
        _getch();
}

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

  1. Объявлены переменные:
    • i (счетчик для цикла)
    • j (счетчик для цикла)
    • N (количество случайных чисел, которые необходимо сгенерировать)
    • mass (массив для хранения сгенерированных случайных чисел)
  2. Пользователю предлагается ввести значение N.
  3. Если пользователь ввел значение N некорректно (не число или число, которое выходит за пределы допустимого диапазона), программа выведет сообщение об ошибке и запросит повторный ввод.
  4. Если пользователь ввел корректное значение N, программа переходит к следующему этапу.
  5. Программа генерирует случайные числа от 0 до N-1 и сохраняет их в массиве mass.
  6. Если количество сгенерированных случайных чисел (i) превышает 8 или меньше 20, программа выведет сообщение об ошибке и запросит повторный ввод.
  7. Пользователю предлагается ввести число i.
  8. Если пользователь ввел значение i некорректно (не число или число, которое выходит за пределы допустимого диапазона), программа выведет сообщение об ошибке и запросит повторный ввод.
  9. Если пользователь ввел корректное значение i, программа переходит к следующему этапу.
  10. Программа выводит сгенерированные случайные числа на экран.
  11. Пользователю предлагается нажать любую клавишу для выхода из программы.
  12. Программа завершается.

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


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

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

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