Предмет: Информатика,
автор: zed0120
Написать программу, которая проверяет, является ли введенная с клавиатуры строка шестнадцатеричным числом.(количество символов в строке не более 6) на C или C++
Ответы
Автор ответа:
1
#include <iostream>
#include <string>
#include <regex>
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: ";
std::cin >> str;
if (is_hexadecimal(str)) {
std::cout << "The entered string is hexadecimal\n";
}
else {
std::cout << "The entered string is not hexadecimal \n";
}
return 0;
}
Оффтоп: сайт интересно пропарсил мой первый коммент, что убрал то, что я включил в треугольные скобки - а именно ... подключается через "regex". "Регулярки" ...
Предположил, что ваша фраза "количество символов в строке не больше 6" направлена на то, чтобы упростить задачу программисту, т.е. что программа не обязательно должна правильно обрабатывать строки длиннее 6 символов. Если же вам нужно проверять это условие, то добавьте && str.size() <= 6 внутрь тела if()
Огромное спасибо
Тебе спасибо за вопрос, помог мне выучить регулярки :)
а можно как то попроще написать
я впринципе понял но объяснить смогу не все
можно ли написать через циклы или условия ?
Можно, но мне это уже не интересно :(
Пусть кто-нибудь другой возьмется - будет многостороннее решение.
Пусть кто-нибудь другой возьмется - будет многостороннее решение.
хорошо
Похожие вопросы
Предмет: Русский язык,
автор: nosirshukurov70
Предмет: Химия,
автор: mcau66447
Предмет: Математика,
автор: artursilantev4
Предмет: Алгебра,
автор: Jenya66613
Предмет: Геометрия,
автор: lisaSmail
1) ^ - перед числом не должно быть символов (aka начало строки)
2) (0x|0X)? - проверяем, что после начала строки идет 0x или 0X либо их нет. П.С. шестнадцатеричные числа могу иметь такие начала (но могут и не иметь).
3) [A-Fa-f0-9]+ в строке есть хотя бы одни символ из диапазона A-F или a-f или 0-9.
4) $ - конец строки.