Как организовать защиту интовской переменной от ввода букв и т.д.? - 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)
        );

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

  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
Похожие ответы