Проверка на ввод только чисел - C (СИ)

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

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

Привет! У меня есть код:
#include "stdio.h"

int main() {
 
    int q;
    double j;
    printf("Enter the number of the data presented: ");
    scanf("%d", &q);
    double* arr = new double[q];
    for (int i = 0; i < q; i++) {
        if(scanf("%lf", &j)!=1){
            printf("\nError!\nTry again!\n"); break; }
            else
            {
        arr[i] = j;
        if (j == (int)j)
            printf("True\n");
        else
            printf("False\n");
            }
    }
    return 0;
}
Программа проверяет, является ли число целым. Если да - True, если нет - False. В качестве проверки я использовал это:
if(scanf("%lf", &j)!=1)
но мне кажется это не очень правильным, хоть и работает в принципе как нужно. Задание звучит так: "... является ли введенная с клавиатуры строка целым числом." Но не сложную проверку на С я не смог придумать. Слышал, что есть проверка по ACII, и в принципе достаточно хороший вариант, но я не знаю как его можно реализовать. Спасибо

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

textual
Листинг программы
#include "stdio.h"
 
 
 
int main() 
{
    int i, j;
    char mass[100];
    printf("Enter string: ");
    fgets(mass, 100, stdin);
    for(i=0; i<100; i++) {
        if(((char)mass[i]>=48) && ((char)mass[i]<=57))
        j++;
 
        if((char)mass[i]=='\0') {
            i--; break;
        }
        else i++;
    }
    if(i==j) {
    printf("Its true\n");
    }
    else
        printf("its false\n");
    
   getchar();
}

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

Вывод программы проверяет, является ли введенная строка числовой.

  1. В начале программы объявлены две переменные типа int — i и j, и одна переменная типа char — mass, которая является массивом на 100 символов.
  2. Затем пользователю предлагается ввести строку с помощью функции printf, а функция fgets считывает эту строку и сохраняет ее в массиве mass.
  3. Далее в цикле for перебираются все символы в массиве mass.
  4. Если текущий символ является числом (в диапазоне от 0 до 9), то переменная j увеличивается на 1.
  5. Если текущий символ является нулевым символом ('\0'), то цикл прерывается и переменная i уменьшается на 1, чтобы пропустить нулевой символ при подсчете длины числа.
  6. Если текущий символ не является числом или нулевым символом, то переменная i увеличивается на 1.
  7. После завершения цикла проверяется, равны ли переменные i и j. Если да, то выводится сообщение Its true, что означает, что введенная строка является числовой. В противном случае выводится сообщение its false, что означает, что введенная строка не является числовой.
  8. В конце программы вызывается функция getchar(), чтобы программа не закрылась сразу после вывода сообщения.

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


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

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

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