Проверка на ввод только чисел - 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(), чтобы программа не закрылась сразу после вывода сообщения.