Программирование на С. двойной запрос ввода - 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(); }
Объяснение кода листинга программы
- Объявлены переменные:
- i (счетчик для цикла)
- j (счетчик для цикла)
- N (количество случайных чисел, которые необходимо сгенерировать)
- mass (массив для хранения сгенерированных случайных чисел)
- Пользователю предлагается ввести значение N.
- Если пользователь ввел значение N некорректно (не число или число, которое выходит за пределы допустимого диапазона), программа выведет сообщение об ошибке и запросит повторный ввод.
- Если пользователь ввел корректное значение N, программа переходит к следующему этапу.
- Программа генерирует случайные числа от 0 до N-1 и сохраняет их в массиве mass.
- Если количество сгенерированных случайных чисел (i) превышает 8 или меньше 20, программа выведет сообщение об ошибке и запросит повторный ввод.
- Пользователю предлагается ввести число i.
- Если пользователь ввел значение i некорректно (не число или число, которое выходит за пределы допустимого диапазона), программа выведет сообщение об ошибке и запросит повторный ввод.
- Если пользователь ввел корректное значение i, программа переходит к следующему этапу.
- Программа выводит сгенерированные случайные числа на экран.
- Пользователю предлагается нажать любую клавишу для выхода из программы.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д