Как организовать защиту интовской переменной от ввода букв и т.д.? - C (СИ)
Формулировка задачи:
//ГЉГ*æäûå n ñèìâîëîâ ГўГ® ââåäåГ*Г*îì ГІГҐГЄГ±ГІГҐ îòäåëèòü Г§Г*Г*êîì "!". #include <stdio.h> #include <conio.h> #include <string.h> char buf[1]; // ГЎГіГґГҐГ° int main(int argc, char *argv[]) { char str[255], str1[255]; int i,j,len,n,k=1; size_t sz; buf[0] = '\0'; str1[0]= '\0'; j=0; // èçáûòî÷Г*Г*Гї ГЁГ*èöèГ*ëèçГ*öèÿ printf("Stroka="); gets(str); printf("n="); scanf("%d",&n); sz = strncpy(buf, str, 1); // ïðèìåð îïðåäåëåГ*ГЁГї ГіГ±ГҐГ·ГҐГ*ГЁГї ñòðîêè len=strlen(str); printf("n=%d",n); while ((n>len) || (n<=0)) { printf("VVESTI KORREKNOE n\n"); printf("n="); scanf("%d",&n); } for(i=0;i<len;i++) { sz = strncpy(buf, str+i, 1); if (i==n*k) { strcat(str1, "!"); k++; } strcat(str1, buf); } printf("\nStroka=%s",str1); getch(); }
Решение задачи: «Как организовать защиту интовской переменной от ввода букв и т.д.?»
textual
Листинг программы
do { printf("Введите № (от %d до %d): ", 1, A*B); fflush(stdin); //очистка буффера памяти с ввода } while( scanf ("%d", &a) !=1 && printf("Надо вводить число!\n") || p <= 0 && printf("Надо вводить положительное число!\n") || p > A*B && printf("Надо вводить число от %d до %d!\n", 1, A*B) );
Объяснение кода листинга программы
- Объявлены переменные: A, B, a, p.
- Введен цикл do-while.
- В первой ветке цикла происходит вывод сообщения с просьбой ввести номер (от 1 до A*B) и очистка буфера ввода с помощью fflush(stdin).
- Вторая ветка цикла проверяет, что было введено число (сканирование с помощью scanf), и если это не так, выводит сообщение
Надо вводить число!
. - Третья ветка цикла проверяет, что введенное число больше или равно 0, и если это не так, выводит сообщение
Надо вводить положительное число!
. - Четвертая ветка цикла проверяет, что введенное число меньше или равно AB, и если это не так, выводит сообщение
Надо вводить число от 1 до %d!
, 1, AB. - Цикл выполняется до тех пор, пока не будет введено число, удовлетворяющее всем условиям.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д