Проверка на ввод только чисел - C (СИ)
Формулировка задачи:
Привет!
У меня есть код:
Программа проверяет, является ли число целым. Если да - True, если нет - False.
В качестве проверки я использовал это:
но мне кажется это не очень правильным, хоть и работает в принципе как нужно.
Задание звучит так:
"... является ли введенная с клавиатуры строка целым числом."
Но не сложную проверку на С я не смог придумать.
Слышал, что есть проверка по ACII, и в принципе достаточно хороший вариант, но я не знаю как его можно реализовать. Спасибо
#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; }
if(scanf("%lf", &j)!=1)
Решение задачи: «Проверка на ввод только чисел»
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(); }
Объяснение кода листинга программы
Вывод программы проверяет, является ли введенная строка числовой.
- В начале программы объявлены две переменные типа int — i и j, и одна переменная типа char — mass, которая является массивом на 100 символов.
- Затем пользователю предлагается ввести строку с помощью функции printf, а функция fgets считывает эту строку и сохраняет ее в массиве mass.
- Далее в цикле for перебираются все символы в массиве mass.
- Если текущий символ является числом (в диапазоне от 0 до 9), то переменная j увеличивается на 1.
- Если текущий символ является нулевым символом ('\0'), то цикл прерывается и переменная i уменьшается на 1, чтобы пропустить нулевой символ при подсчете длины числа.
- Если текущий символ не является числом или нулевым символом, то переменная i увеличивается на 1.
- После завершения цикла проверяется, равны ли переменные i и j. Если да, то выводится сообщение
Its true
, что означает, что введенная строка является числовой. В противном случае выводится сообщениеits false
, что означает, что введенная строка не является числовой. - В конце программы вызывается функция getchar(), чтобы программа не закрылась сразу после вывода сообщения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д