Форум программистов, компьютерный форум CyberForum.ru

Выяснить, является ли хоть одно из трех слов палиндромом - C++

Восстановить пароль Регистрация
 
DaStAn1996
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 19
12.12.2013, 16:08     Выяснить, является ли хоть одно из трех слов палиндромом #1
32. Даны три слова. Выяснить, является ли хоть одно из них палиндромом («перевертышем»), т. е. таким, которое
читается одинаково слева направо и справа налево. (Определить функцию, позволяющую распознавать слова-палиндромы.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 16:08     Выяснить, является ли хоть одно из трех слов палиндромом
Посмотрите здесь:

В массиве слов найти пару слов, из которых одно является обращением другого C++
Цикл: выяснить, является ли число палиндромом C++
В тексте найти пару слов, из которых одно является обращением другого C++
Выяснить является ли хоть одно из данных чисел палиндромом(перевёртышем) C++
В заданном предложении найти пару слов, из которых одно является обращением другого C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.12.2013, 17:00     Выяснить, является ли хоть одно из трех слов палиндромом #2
Даны три слова. Выяснить, является ли хоть одно из них палиндромом («перевертышем»), т. е. таким, которое
читается одинаково слева направо и справа налево. (Определить функцию, позволяющую распознавать слова-палиндромы.)
Как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
 
bool poly(std::string str)
{
     int k = str.size();
     for(int i = 0; i < str.size() / 2; ++i)
     {
       if(str[i] != str[k - 1]) return false;
       --k;
     }
     return true;
}
 
int main()
{
    std::string str1;
    std::string str2;
    std::string str3;
    
    std::cout << "Input string: "; std::cin >> str1;
    std::cout << "Input string: "; std::cin >> str2;
    std::cout << "Input string: "; std::cin >> str3;
    
    if(poly(str1))
      std::cout << "String 1 is polyndrom" << std::endl;
    else
      std::cout << "String 1 is not polyndrom" << std::endl; 
      
    if(poly(str2))
      std::cout << "String 2 is polyndrom" << std::endl;
    else
      std::cout << "String 2 is not polyndrom" << std::endl; 
      
    if(poly(str3))
      std::cout << "String 3 is polyndrom" << std::endl;
    else
      std::cout << "String 3 is not polyndrom" << std::endl; 
      
      system("PAUSE");
    
   return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
12.12.2013, 17:09     Выяснить, является ли хоть одно из трех слов палиндромом #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <algorithm>
#include <iostream>
#include <string>
 
bool isPalindromeString(std::string userString);
 
int main()
{
    const size_t wordsCount(3);
    std::string userString;
    for (size_t i = 0; i < wordsCount; i++) {
        std::cout << std::endl << (i + 1) << " word: ";
        std::cin >> userString;
        std::cout << "Is palindrome? - " << std::boolalpha << isPalindromeString(userString) << std::endl;
    }
 
    std::system("pause");
    return 0;
}
 
bool isPalindromeString(std::string userString)
{
    std::string reverseString(userString);
    std::reverse(reverseString.begin(), reverseString.end());
    return userString == reverseString;
}
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
12.12.2013, 17:10     Выяснить, является ли хоть одно из трех слов палиндромом #4
egor2116, не учите столь плохому. Немного поправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
 
bool poly(std::string str)
{
     unsigned int k = str.length();
     for(unsigned int i = 0; i < str.length() / 2; ++i)
     {
       if(str[i] != str[k - 1]) return false;
       --k;
     }
     return true;
}
 
int main()
{
   const int CSTR = 3;
   std::string str[CSTR];
   
   for (int i = 0; i < CSTR; i++) {
      std::cout << "Input string: "; 
      std::cin >> str[i];
   }
   
   for (int i = 0; i < CSTR; i++)
      if(poly(str[i]))
         std::cout << "String " << i << " is polyndrom" << std::endl;
      else
         std::cout << "String " << i << " is not polyndrom" << std::endl;
   
   system("PAUSE");
   
   return 0;
}
Ev[G]eN
12.12.2013, 17:13
  #5

Не по теме:

протупил. прошу прощения

elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
12.12.2013, 17:15     Выяснить, является ли хоть одно из трех слов палиндромом #6
Ev[G]eN, это массив из 3-х строк
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.12.2013, 17:15     Выяснить, является ли хоть одно из трех слов палиндромом #7
не учите столь плохому. Немного поправил:
elivin, вы прям гений как это я сам не увидел, возьмите меня в ученики .
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
12.12.2013, 17:26     Выяснить, является ли хоть одно из трех слов палиндромом #8
egor2116, к чему это? Вы не согласны, что повторяющийся код, а именно строки:
C++
1
std::cout << "Input string: "; std::cin >> str1;
и
C++
1
2
3
4
if(poly(str1))
      std::cout << "String 1 is polyndrom" << std::endl;
    else
      std::cout << "String 1 is not polyndrom" << std::endl;
стоит запихнуть в цикл, а не повторять по несколько раз? А представьте, ТЗ меняется и нужно проверить 10 строк, а не 3? Будете ещё по 7 копий пилить?
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.12.2013, 17:30     Выяснить, является ли хоть одно из трех слов палиндромом #9
Да благодаря вашей мастерской оптимизации программа стала намного лучше, одним слом эксперт куда там мне.
P.S. То что вы делаете называет выпендриваться.
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
12.12.2013, 17:47     Выяснить, является ли хоть одно из трех слов палиндромом #10
egor2116, то, что я сделал, называется предостеречь автора темы (и тех, кто также ищет тут ответ) от изначально неверного подхода, осложняющего поддержку кода. Не стоит так бурно на это реагировать.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
13.12.2013, 09:51     Выяснить, является ли хоть одно из трех слов палиндромом #11
осложняющего поддержку кода
Для этого двухстрочного примера, хах ты юморной.
Все удачи.
bradobrei
13.12.2013, 11:30
  #12

Не по теме:

Пошла возьня

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.12.2013, 12:40     Выяснить, является ли хоть одно из трех слов палиндромом #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <boost/range/adaptors.hpp>
#include <boost/range/algorithm/equal.hpp>
 
int main()
{
   const size_t words = 3;
   auto is_poly = [](const std::string& value)
   {
      return boost::equal(boost::make_iterator_range(value.begin(), value.end()),
      value | boost::adaptors::reversed);
   };
   for (size_t i = 0; i < 3; ++i)
   {
      std::string word;
      std::cin >> word;
      std::cout << word << " is" << (is_poly(word) ? " " : " not ") << "poly" << std::endl;
   }
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
13.12.2013, 13:08     Выяснить, является ли хоть одно из трех слов палиндромом #14
ForEveR, а почему просто не
C++
1
2
3
4
bool isPoly(std::string& s)
{
    return std::equal(s.begin(), s.end(), s.rbegin());
}
?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 13:13     Выяснить, является ли хоть одно из трех слов палиндромом
Еще ссылки по теме:

C++ Выяснить, является ли данное слово палиндромом(перевертышем)
Является ли строка палиндромом C++
Даны три слова. Определить, является ли хоть одно из них палиндромом C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.12.2013, 13:13     Выяснить, является ли хоть одно из трех слов палиндромом #15
Dani, Ну почему не функция - потому что лямбда. А вот сравнение да, вполне логичное, мне просто хотелось вспомнить range.
Yandex
Объявления
13.12.2013, 13:13     Выяснить, является ли хоть одно из трех слов палиндромом
Ответ Создать тему
Опции темы

Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru