Как организовать защиту интовской переменной от ввода букв и т.д.? - C (СИ)

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

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

Листинг программы
  1. //ГЉГ*æäûå n ñèìâîëîâ ГўГ® ââåäåГ*Г*îì ГІГҐГЄГ±ГІГҐ îòäåëèòü Г§Г*Г*êîì "!".
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <string.h>
  5. char buf[1]; // ГЎГіГґГҐГ°
  6. int main(int argc, char *argv[])
  7. {
  8. char str[255], str1[255];
  9. int i,j,len,n,k=1;
  10. size_t sz;
  11. buf[0] = '\0';
  12. str1[0]= '\0';
  13. j=0;
  14. // èçáûòî÷Г*Г*Гї ГЁГ*ГЁГ¶ГЁГ*ëèçГ*Г¶ГЁГї
  15. printf("Stroka=");
  16. gets(str);
  17. printf("n=");
  18. scanf("%d",&n);
  19. sz = strncpy(buf, str, 1);
  20. // ïðèìåð îïðåäåëåГ*ГЁГї ГіГ±ГҐГ·ГҐГ*ГЁГї ñòðîêè
  21. len=strlen(str);
  22. printf("n=%d",n);
  23. while ((n>len) || (n<=0))
  24. {
  25. printf("VVESTI KORREKNOE n\n");
  26. printf("n=");
  27. scanf("%d",&n);
  28. }
  29. for(i=0;i<len;i++)
  30. {
  31. sz = strncpy(buf, str+i, 1);
  32. if (i==n*k)
  33. {
  34. strcat(str1, "!");
  35. k++;
  36. }
  37. strcat(str1, buf);
  38. }
  39. printf("\nStroka=%s",str1);
  40. getch();
  41. }

Решение задачи: «Как организовать защиту интовской переменной от ввода букв и т.д.?»

textual
Листинг программы
  1. do
  2.     {
  3.         printf("Введите № (от %d до %d): ", 1,  A*B);
  4.         fflush(stdin); //очистка буффера памяти с ввода
  5.     }
  6.     while(
  7.         scanf ("%d", &a) !=1    && printf("Надо вводить число!\n")
  8.         || p <= 0               && printf("Надо вводить положительное число!\n")
  9.         || p > A*B              && printf("Надо вводить число от %d до %d!\n", 1, A*B)
  10.         );

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

  1. Объявлены переменные: A, B, a, p.
  2. Введен цикл do-while.
  3. В первой ветке цикла происходит вывод сообщения с просьбой ввести номер (от 1 до A*B) и очистка буфера ввода с помощью fflush(stdin).
  4. Вторая ветка цикла проверяет, что было введено число (сканирование с помощью scanf), и если это не так, выводит сообщение Надо вводить число!.
  5. Третья ветка цикла проверяет, что введенное число больше или равно 0, и если это не так, выводит сообщение Надо вводить положительное число!.
  6. Четвертая ветка цикла проверяет, что введенное число меньше или равно AB, и если это не так, выводит сообщение Надо вводить число от 1 до %d!, 1, AB.
  7. Цикл выполняется до тех пор, пока не будет введено число, удовлетворяющее всем условиям.

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


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

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

8   голосов , оценка 4.375 из 5

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

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

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