
Напишите пожалуйста код для c++ Строка содержит цифры, буквы и незначительные символы (пробел,
'+', '-', '!', '@', '#', '$', '%', '^' , '&' , '?' , '*', '(', ')' , '/', '[', ']', '{', '}', '<', '>'). Проверить, является ли он палиндромом без учета незначимых символов. Палиндром, оборотень, рак лит. налево). Входные данные Программа считывает строку символов с клавиатуры. Исходные данные Программа выводит на экран TRUE, если данная строка является палиндромом, FALSE – в противном случае. Примеры входящих и исходящих данных Введение: +++897$%$#* [email protected]@ Вывод: TRUE Введение: Zxc***----5%%cx^^^z Вывод: FALSE

Ответы на вопрос

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
signed main() {
string line, buff = "";
bool isPalindrome = true;
getline(cin, line);
for (int i = 0; i < line.size(); i++) {
if (isalnum(line[i]))
buff += line[i];
}
for (int i = 0; i < buff.size() / 2; ++i)
{
if (buff[i] != buff[buff.size() - i - 1])
{
isPalindrome = false;
break;
}
}
if (isPalindrome)
cout << "TRUE";
else
cout << "FALSE";
return 0;
}



Вот пример кода на C++, который выполняет проверку, является ли введенная строка палиндромом без учета незначимых символов:
```cpp
#include
bool isPalindrome(const std::string& str) { // Функция для проверки, является ли символ значимым auto isSignificant = [](char c) { return std::isalnum(c) || c == ' ' || c == '+' || c == '-' || c == '!' || c == '@' || c == '#' || c == '$' || c == '%' || c == '^' || c == '&' || c == '?' || c == '*' || c == '(' || c == ')' || c == '/' || c == '[' || c == ']' || c == '{' || c == '}' || c == '<' || c == '>'; };
// Создаем новую строку, содержащую только значимые символы std::string filteredStr; for (char c : str) { if (isSignificant(c)) { filteredStr += std::tolower(c); // Приводим к нижнему регистру для учета регистра } }
// Проверяем, является ли отфильтрованная строка палиндромом int left = 0; int right = filteredStr.length() - 1; while (left < right) { if (filteredStr[left] != filteredStr[right]) { return false; } ++left; --right; }
return true; }
int main() { // Ввод строки с клавиатуры std::cout << "Введите строку: "; std::string input; std::getline(std::cin, input);
// Проверка и вывод результата if (isPalindrome(input)) { std::cout << "TRUE" << std::endl; } else { std::cout << "FALSE" << std::endl; }
return 0; } ```
Пример ввода: ``` Введите строку: 897$%$#*+@! ``` Вывод: ``` TRUE ```
Пример ввода: ``` Введите строку: Zxc***----5%%cx^^^z ``` Вывод: ``` FALSE ```
Этот код преобразует введенную строку, удаляя все незначимые символы и приводя оставшиеся символы к нижнему регистру. Затем он проверяет, является ли полученная строка палиндромом.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili