Как сделать так, чтобы можно вводить только целые цифры, без запятых? - C (СИ)

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

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

Задание: За номером дня месяца вывести на экран предыдущее число, если в месяце 31 день. так то я написала.а вот что нужно добавить,чтобы можно было вводить только целое число,чтоб без всяких запятых? я пошла сдавать,а учительница сказала ввести 3,5. оно показало,что вчера было 2 число.а ведь третьего с половиной дня не бывает....
int W;
    
    setlocale (0, "Rus");
    printf ("Ввести день месяца: ");
    scanf ("%d",&W);

    switch (W)
    {case 1:
            printf("Вчера было 30 число");
            break;  
    case 2:
            printf("Вчера было 1 число");
            break;
    case 3:
            printf("Вчера было 2 число");
            break;  
    case 4:
            printf("Вчера было 3 число");
            break;  
    case 5:
            printf("Вчера было 4 число");
            break;  
    case 6:
            printf("Вчера было 5 число");
            break;  
    case 7:
            printf("Вчера было 6 число");
            break;
    case 8:
            printf("Вчера было 7 число");
            break;  
    case 9:
            printf("Вчера было 8 число");
            break;  
    case 10:
            printf("Вчера было 9 число");
            break;          
    case 11:
            printf("Вчера было 10 число");
            break;  
    case 12:
            printf("Вчера было 11 число");
            break;          
    case 13:
            printf("Вчера было 12 число");
            break;  
    case 14:
            printf("Вчера было 13 число");
            break;  
    case 15:
            printf("Вчера было 14 число");
            break;  
    case 16:
            printf("Вчера было 15 число");
            break;  
    case 17:
            printf("Вчера было 16 число");
            break;
    case 18:
            printf("Вчера было 17 число");
            break;  
    case 19:
            printf("Вчера было 18 число");
            break;  
    case 20:
            printf("Вчера было 19 число");
            break;          
    case 21:
            printf("Вчера было 20 число");
            break;  
    case 22:
            printf("Вчера было 21 число");
            break;  
    case 23:
            printf("Вчера было 22 число");
            break;  
    case 24:
            printf("Вчера было 23 число");
            break;  
    case 25:
            printf("Вчера было 24 число");
            break;  
    case 26:
            printf("Вчера было 25 число");
            break;          
    case 27:
            printf("Вчера было 26 число");
            break;          
    case 28:
            printf("Вчера было 27 число");
            break;          
    case 29:
            printf("Вчера было 28 число");
            break;  
    case 30:
            printf("Вчера было 29 число");
            break;  
    case 31:        
            printf("Вчера было 30 число");
            break;      
        default:
            printf ("Нужно ввести число от 1 до 31 включительно! ");
    }
    
getch();

Решение задачи: «Как сделать так, чтобы можно вводить только целые цифры, без запятых?»

textual
Листинг программы
#include<stdio.h>
#include<ctype.h>
#include<locale.h>
 
int main()
{
   int W;
 
setlocale (0, "Rus");
printf ("Ввести день месяца: ");
scanf ("%d",&W);
 
if(W>='0' && W<='9')
 
switch (W)
{case 1:
printf("Вчера было 30 число");
break;
case 2:
printf("Вчера было 1 число");
break;
case 3:
printf("Вчера было 2 число");
break;
case 4:
printf("Вчера было 3 число");
break;
case 5:
printf("Вчера было 4 число");
break;
case 6:
printf("Вчера было 5 число");
break;
case 7:
printf("Вчера было 6 число");
break;
case 8:
printf("Вчера было 7 число");
break;
case 9:
printf("Вчера было 8 число");
break;
case 10:
printf("Вчера было 9 число");
break;
case 11:
printf("Вчера было 10 число");
break;
case 12:
printf("Вчера было 11 число");
break;
case 13:
printf("Вчера было 12 число");
break;
case 14:
printf("Вчера было 13 число");
break;
case 15:
printf("Вчера было 14 число");
break;
case 16:
printf("Вчера было 15 число");
break;
case 17:
printf("Вчера было 16 число");
break;
case 18:
printf("Вчера было 17 число");
break;
case 19:
printf("Вчера было 18 число");
break;
case 20:
printf("Вчера было 19 число");
break;
case 21:
printf("Вчера было 20 число");
break;
case 22:
printf("Вчера было 21 число");
break;
case 23:
printf("Вчера было 22 число");
break;
case 24:
printf("Вчера было 23 число");
break;
case 25:
printf("Вчера было 24 число");
break;
case 26:
printf("Вчера было 25 число");
break;
case 27:
printf("Вчера было 26 число");
break;
case 28:
printf("Вчера было 27 число");
break;
case 29:
printf("Вчера было 28 число");
break;
case 30:
printf("Вчера было 29 число");
break;
case 31:
printf("Вчера было 30 число");
break;
default:
printf ("Нужно ввести число от 1 до 31 включительно! ");
}
else printf("Такого дня не существует!!!");
getchar();
}

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

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с вводом/выводом данных
    • ctype.h для работы с преобразованием символов
    • locale.h для работы с локалью (в данном случае для русского языка)
  2. Устанавливаем локаль на русскую: setlocale (0,Rus);
  3. Выводим запрос на ввод: printf (Ввести день месяца: );
  4. Считываем введенное значение в переменную W типа int: scanf (%d,&W);
  5. Проверяем, что введенное значение находится в диапазоне от '0' до '9': if(W>='0' && W<='9')
  6. Осуществляем перебор всех возможных значений от 1 до 31:
    • switch (W): выполняет блок кода в зависимости от значения переменной W
      • case 1: выводит сообщение, что вчера было 30 число
      • case 2: выводит сообщение, что вчера было 1 число
      • case 3: выводит сообщение, что вчера было 2 число
      • ...
      • case 31: выводит сообщение, что вчера было 30 число
    • default: выводит сообщение, что нужно ввести число от 1 до 31
  7. Если значение W не соответствует ни одному из перечисленных выше, выводим сообщение об ошибке: printf (Такого дня не существует!!!);
  8. Получаем символ ввода (для избежания выведения сообщения об ошибке при нажатии Enter): getchar();
  9. Завершаем программу.

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


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

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

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