Проверка на корректность данных - C (СИ)

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

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

Нужно чтобы данные переменная была типа %d и больше 1, как это проверить? Предположил, что так:
  while(ni==0)
    {
        printf("Введите количество элементов: ");
        scanf_s("%d",&ni);
        if(!ni || ni<1)
        {
            printf("Введите верные данные\n");
            ni=0;
        }
    }

Решение задачи: «Проверка на корректность данных»

textual
Листинг программы
int IsValidEnter(char *str)
{
    int i;
    
    if (str[0] < '1' && str[0] > '9')
        return 0;
    for (i = 1; i < strlen(str); i++)
        if (str[0] < '0' && str[0] > '9')
            return 0;
            
    return 1;
}
 
int StrToInt (char *str)
{
    int i;
    int res = 0;
    
    for (i = 0; i < strlen(str); i++)
    {
        res *= 10;
        res += (str[i]-'0');
    }
    
    return res;
}
 
int main()
{
    char s[255];
    int ni;
...
    while(1)
    {
        printf("Введите количество элементов: ");
        gets(str);
        if(!IsValidEnter(s))
        {
            printf("Введите числовые данные.\n");
            continue;
        }
        ni = StrToInt(s);
        if (ni < 1)
        {
            printf("Количество должно быть больше единицы.\n");
            continue;
        }
        break;
    }
 
}

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

  1. Функция IsValidEnter проверяет, является ли введенное значение числовым.
  2. Если первый символ не является числом, функция возвращает 0.
  3. Если любой последующий символ не является числом, функция возвращает 0.
  4. Если все символы являются числами, функция возвращает 1.
  5. Функция StrToInt преобразует строку в целое число.
  6. Для преобразования каждого символа в число, он вычитается из символа '0'.
  7. Результат умножается на 10 и добавляется к общему результату.
  8. В функции main вводится количество элементов.
  9. Если введенное значение не является числом, выводится сообщение об ошибке и цикл продолжается.
  10. Если введенное значение меньше 1, выводится сообщение об ошибке и цикл продолжается.
  11. Если введенное значение является числом, программа продолжает работу.

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


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

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

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