Написать программу, которая проверяет, является ли введенная с клавиатуры строка...

0 голосов
96 просмотров

Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом.(количество символов в строке не более 6) на C или C++


Информатика (26 баллов) | 96 просмотров
Дан 1 ответ
0 голосов

#include

#include

#include


bool is_hexadecimal(const std::string& str) {

return std::regex_match( str, std::regex("^(0x|0X)?[A-Fa-f0-9]+$") );

}


int main() {

std::string str;


std::cout << "Please enter hexadecimal number: "; </p>

std::cin >> str;

if (is_hexadecimal(str)) {

std::cout << "The entered string is hexadecimal\n";</p>

}

else {

std::cout << "The entered string is not hexadecimal \n"; </p>

}

return 0;

}

(282 баллов)
0

Что значит вот это: ^(0x|0X)?[A-Fa-f0-9]+$1) ^ - перед числом не должно быть символов (aka начало строки)2) (0x|0X)? - проверяем, что после начала строки идет 0x или 0X либо их нет. П.С. шестнадцатеричные числа могу иметь такие начала (но могут и не иметь).3) [A-Fa-f0-9]+ в строке есть хотя бы одни символ из диапазона A-F или a-f или 0-9.4) $ - конец строки.

0

Оффтоп: сайт интересно пропарсил мой первый коммент, что убрал то, что я включил в треугольные скобки - а именно ... подключается через "regex". "Регулярки" ...

0

Предположил, что ваша фраза "количество символов в строке не больше 6" направлена на то, чтобы упростить задачу программисту, т.е. что программа не обязательно должна правильно обрабатывать строки длиннее 6 символов. Если же вам нужно проверять это условие, то добавьте && str.size() <= 6 внутрь тела if()

0

Огромное спасибо

0

Тебе спасибо за вопрос, помог мне выучить регулярки :)

0

а можно как то попроще написать

0

я впринципе понял но объяснить смогу не все

0

можно ли написать через циклы или условия ?

0

Можно, но мне это уже не интересно :( Пусть кто-нибудь другой возьмется - будет многостороннее решение.

0

хорошо