Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int main() {
- // Полиндром:
- std::string word; // объявляем переменную строки
- std::cout << "Enter word: " << std::endl;
- std::cin >> word; // вводим строку
- std::string tolowerWord; // в эту переменную мы запишем ту же строку но в нижнем регистре
- std::string clearWord; // в эту переменную будем записывать все нужные символы
- unsigned long len = word.length(); // находим длину строки, це нужно для цикла
- int isPolindrom = 1; // инициализируем флаг, изначально мы считаем, что слово является полиндромом
- int i = 0; // инициализируем итератор
- int j = 0;
- for (i=0; i < len; ++i) //сначала преведем все символы к одному регистру
- {
- tolowerWord += (char)tolower(word[i]);
- }
- std::string currentWords; // переменная в которой храняться допустимые символы
- currentWords = std::to_string('qwertyuiopasdfghjklzxcvbnm1234567890'); //список допустимых символов, здесь ток маленькие буквы так как мы приводим все к нижниму регистру
- for (i=0; i < len; ++i){ // запускаем цикл по всем символом строки с нижним регистром
- for(j=0; j < currentWords.length(); j++) // запускаем цикл по всем допустимым символам
- {
- if(tolowerWord[i] == currentWords[j]){ // если символ из строки равен допустимому символу, то добавляем его в чистую строку
- clearWord += tolowerWord[i];
- }
- }
- }
- len = clearWord.length();
- for(i = 0; i < len/2; ++i) // начинаем цикл с первого символа и до середины слова(до середины так как мы проверяем итый символ и итый с конца одновременно)
- {
- if (clearWord[i] != clearWord[len-i-1]) // если у нас не совпадает (итый) и (итый с конца элемент), значит слово не полиндром
- {
- isPolindrom = 0; // изменяем флаг
- std::cout << (int)clearWord[i];
- }
- } // если все символы совпали, то слово полиндром, мы не меняем флаг, так как изначально мы решили что слово и есть полиндром
- if (isPolindrom == 1) // если флаг не тронут, значит слово полиндром
- {
- std::cout << "1" <<std::endl;
- }
- else // если флаг был изменен - значит какие-то из символов не совпали, слово не полиндром
- {
- std::cout << "0" <<std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement