Запрет ввода букв и некоторых цифр - 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();
}

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

В этом коде:

  1. Объявлена переменная n типа char.
  2. Задаётся условие цикла while(1), которое выполняется бесконечно.
  3. В каждой итерации цикла выполняется операция scanf(), которая считывает с консоли один символ и сохраняет его в переменной n.
  4. Далее выполняется проверка: если считанный символ равен '1' или '2', то цикл прерывается с помощью оператора break.
  5. После окончания цикла выполняется оператор switch, который выбирает один из двух вариантов в зависимости от значения переменной n.
  6. В каждом варианте switch выводится на консоль соответствующая строка с помощью функции printf().
  7. В конце программы выполняется функция _getch(), которая приостанавливает выполнение программы и ожидает нажатия клавиши на консоли.

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


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

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

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