Проверка корректности ввода числа в шестнадцатеричной системе счисления - C (СИ)
Формулировка задачи:
Добрый день!
Мне нужно проверить правильность введенного числа в шестнадцатеричной системе счисления. Т.е. программа должна выдавать ошибку, если мы введем, допустим, символы "vtyu8h"
если я ввожу просто '1' или 'A', то программа работает верно, а если '48', например, то нет
подскажите, что исправить
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int i, k, f=1;
char c[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'};
char d[100];
printf("Введите число\n");
gets(d);
for (i=0; i<strlen(d) - 1; i++)
for (k=0; k<=11; k++)
if (d[i]==c[k])
{
f++;
}
if (f==i)
printf("верно\n");
else
printf("ошибка\n");
return 0;
}Решение задачи: «Проверка корректности ввода числа в шестнадцатеричной системе счисления»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <windows.h>
int main()
{
char d[100];
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Введите число\n");
gets(d);
if (*d && strspn(d,"0123456789ABCDEF")==strlen(d))
printf("верно\n");
else
printf("ошибка\n");
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью, строками и числами
- Объявление переменной типа char с именем d и размером 100, которая будет использоваться для ввода числа
- Установка кодировки консоли на 1251 с помощью функции SetConsoleCP
- Установка кодировки вывода консоли на 1251 с помощью функции SetConsoleOutputCP
- Вывод сообщения с просьбой ввести число
- Ввод числа с помощью функции gets(d)
- Проверка корректности введенного числа с помощью условного оператора if
- Проверка условия: если введенное число не пустое и состоит только из цифр и букв от A до F, то выводится сообщение
верно - В противном случае выводится сообщение
ошибка - Возврат значения 0, что означает успешный конец работы программы