Запрет ввода букв и некоторых цифр - C (СИ)
Формулировка задачи:
Имеется программа, мне нужно запретить ввод неверных цифр и букв исключая числа 1 и 2. Циклом while думал запретить ввод ненужных цифр и букв, а вот букв не получается, программа зависает...
Просьба, помочь с кодом и исправить имеющиеся ошибки, буду очень признателен. Спасибо
#include <iostream>
#include <stdlib.h>
main()
{
int n;
int answ;
begin:
answ=0;
while ((n!=1) && (n!=2)) {
system("cls");
printf ("\n Please choose massive length: \n");
printf (" 1) 5 \n");
printf (" 2) 6 \n");
printf ("\n Selected option: ");
scanf ( "%d" ,&n);
}
switch (n) {
case 1:
n=5;
printf ("\n Choosen massive length is %d",n);
printf ("\n");
break;
case 2:
n=6;
printf ("\n Choosen massive length is %d",n);
printf ("\n");
break;
}
int Mas[n];
int i;
int j;
for(i=0; i<n; i++) {
printf (" Mas[%d] = ",i);
scanf ( "%d" ,&Mas[i]);
for(j = 0; j < i; j++) {
if(Mas[i] == Mas[j]) {
printf ("\n Element with value %d exist, please try again \n", Mas[i]);
--i;
}
}
}
printf ("\n --------Generated Massive--------\n");
printf ("\n");
for(i=0; i<n; i++) {
printf (" Mas[%d] = %d \n",i,Mas[i]);
}
while ((answ!=1) && (answ!=2)){
printf ("\n Press ''1'' to regenerate massive or ''2'' to ex1t: ");
scanf ( "%d" ,&answ);
}
switch (answ) {
case 1:
goto begin;
break;
case 2:
exit(1);
break;
}
}Решение задачи: «Запрет ввода букв и некоторых цифр»
textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <string.h>
int main()
{
char n;
while(1)
{
scanf("%c",&n);
if(n == '1' || n == '2') { break;}
}
switch(n)
{
case '1': printf("One"); break;
case '2': printf("Two"); break;
}
_getch();
}
Объяснение кода листинга программы
В этом коде:
- Объявлена переменная
nтипаchar. - Задаётся условие цикла
while(1), которое выполняется бесконечно. - В каждой итерации цикла выполняется операция
scanf(), которая считывает с консоли один символ и сохраняет его в переменнойn. - Далее выполняется проверка: если считанный символ равен '1' или '2', то цикл прерывается с помощью оператора
break. - После окончания цикла выполняется оператор
switch, который выбирает один из двух вариантов в зависимости от значения переменнойn. - В каждом варианте
switchвыводится на консоль соответствующая строка с помощью функцииprintf(). - В конце программы выполняется функция
_getch(), которая приостанавливает выполнение программы и ожидает нажатия клавиши на консоли.