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

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

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

Задание: За номером дня месяца вывести на экран предыдущее число, если в месяце 31 день. так то я написала.а вот что нужно добавить,чтобы можно было вводить только целое число,чтоб без всяких запятых? я пошла сдавать,а учительница сказала ввести 3,5. оно показало,что вчера было 2 число.а ведь третьего с половиной дня не бывает....
Листинг программы
  1. int W;
  2. setlocale (0, "Rus");
  3. printf ("Ввести день месяца: ");
  4. scanf ("%d",&W);
  5.  
  6. switch (W)
  7. {case 1:
  8. printf("Вчера было 30 число");
  9. break;
  10. case 2:
  11. printf("Вчера было 1 число");
  12. break;
  13. case 3:
  14. printf("Вчера было 2 число");
  15. break;
  16. case 4:
  17. printf("Вчера было 3 число");
  18. break;
  19. case 5:
  20. printf("Вчера было 4 число");
  21. break;
  22. case 6:
  23. printf("Вчера было 5 число");
  24. break;
  25. case 7:
  26. printf("Вчера было 6 число");
  27. break;
  28. case 8:
  29. printf("Вчера было 7 число");
  30. break;
  31. case 9:
  32. printf("Вчера было 8 число");
  33. break;
  34. case 10:
  35. printf("Вчера было 9 число");
  36. break;
  37. case 11:
  38. printf("Вчера было 10 число");
  39. break;
  40. case 12:
  41. printf("Вчера было 11 число");
  42. break;
  43. case 13:
  44. printf("Вчера было 12 число");
  45. break;
  46. case 14:
  47. printf("Вчера было 13 число");
  48. break;
  49. case 15:
  50. printf("Вчера было 14 число");
  51. break;
  52. case 16:
  53. printf("Вчера было 15 число");
  54. break;
  55. case 17:
  56. printf("Вчера было 16 число");
  57. break;
  58. case 18:
  59. printf("Вчера было 17 число");
  60. break;
  61. case 19:
  62. printf("Вчера было 18 число");
  63. break;
  64. case 20:
  65. printf("Вчера было 19 число");
  66. break;
  67. case 21:
  68. printf("Вчера было 20 число");
  69. break;
  70. case 22:
  71. printf("Вчера было 21 число");
  72. break;
  73. case 23:
  74. printf("Вчера было 22 число");
  75. break;
  76. case 24:
  77. printf("Вчера было 23 число");
  78. break;
  79. case 25:
  80. printf("Вчера было 24 число");
  81. break;
  82. case 26:
  83. printf("Вчера было 25 число");
  84. break;
  85. case 27:
  86. printf("Вчера было 26 число");
  87. break;
  88. case 28:
  89. printf("Вчера было 27 число");
  90. break;
  91. case 29:
  92. printf("Вчера было 28 число");
  93. break;
  94. case 30:
  95. printf("Вчера было 29 число");
  96. break;
  97. case 31:
  98. printf("Вчера было 30 число");
  99. break;
  100. default:
  101. printf ("Нужно ввести число от 1 до 31 включительно! ");
  102. }
  103. getch();

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

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<locale.h>
  4.  
  5. int main()
  6. {
  7.    int W;
  8.  
  9. setlocale (0, "Rus");
  10. printf ("Ввести день месяца: ");
  11. scanf ("%d",&W);
  12.  
  13. if(W>='0' && W<='9')
  14.  
  15. switch (W)
  16. {case 1:
  17. printf("Вчера было 30 число");
  18. break;
  19. case 2:
  20. printf("Вчера было 1 число");
  21. break;
  22. case 3:
  23. printf("Вчера было 2 число");
  24. break;
  25. case 4:
  26. printf("Вчера было 3 число");
  27. break;
  28. case 5:
  29. printf("Вчера было 4 число");
  30. break;
  31. case 6:
  32. printf("Вчера было 5 число");
  33. break;
  34. case 7:
  35. printf("Вчера было 6 число");
  36. break;
  37. case 8:
  38. printf("Вчера было 7 число");
  39. break;
  40. case 9:
  41. printf("Вчера было 8 число");
  42. break;
  43. case 10:
  44. printf("Вчера было 9 число");
  45. break;
  46. case 11:
  47. printf("Вчера было 10 число");
  48. break;
  49. case 12:
  50. printf("Вчера было 11 число");
  51. break;
  52. case 13:
  53. printf("Вчера было 12 число");
  54. break;
  55. case 14:
  56. printf("Вчера было 13 число");
  57. break;
  58. case 15:
  59. printf("Вчера было 14 число");
  60. break;
  61. case 16:
  62. printf("Вчера было 15 число");
  63. break;
  64. case 17:
  65. printf("Вчера было 16 число");
  66. break;
  67. case 18:
  68. printf("Вчера было 17 число");
  69. break;
  70. case 19:
  71. printf("Вчера было 18 число");
  72. break;
  73. case 20:
  74. printf("Вчера было 19 число");
  75. break;
  76. case 21:
  77. printf("Вчера было 20 число");
  78. break;
  79. case 22:
  80. printf("Вчера было 21 число");
  81. break;
  82. case 23:
  83. printf("Вчера было 22 число");
  84. break;
  85. case 24:
  86. printf("Вчера было 23 число");
  87. break;
  88. case 25:
  89. printf("Вчера было 24 число");
  90. break;
  91. case 26:
  92. printf("Вчера было 25 число");
  93. break;
  94. case 27:
  95. printf("Вчера было 26 число");
  96. break;
  97. case 28:
  98. printf("Вчера было 27 число");
  99. break;
  100. case 29:
  101. printf("Вчера было 28 число");
  102. break;
  103. case 30:
  104. printf("Вчера было 29 число");
  105. break;
  106. case 31:
  107. printf("Вчера было 30 число");
  108. break;
  109. default:
  110. printf ("Нужно ввести число от 1 до 31 включительно! ");
  111. }
  112. else printf("Такого дня не существует!!!");
  113. getchar();
  114. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы