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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
blanc_miami
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 16
#1

нахождение палиндрома в строке - C++

17.11.2011, 12:53. Просмотров 2414. Ответов 6
Метки нет (Все метки)

Народ помогите плз!!!

Строка состоит из слов. Найти все самые длинные слова-палиндромы и занести их в новую строку. Слова в новой строке должны разделяться ровно одним пробелом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.11.2011, 13:14     нахождение палиндрома в строке #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
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <boost/algorithm/string.hpp>
 
int main()
{
    const std::string str = "hello and arora neten this is goog";
    std::vector<std::string> vec;
    boost::split(vec, str, [](const char c) {return c == ' ';}, boost::token_compress_on);
    std::vector<std::string> palindroms;
    std::for_each(vec.begin(), vec.end(), [&palindroms](const std::string& s)
    {
       if (s == std::string(s.rbegin(), s.rend()))
       {
          palindroms.push_back(s);
       }
    });
    int max_length = std::max_element(palindroms.begin(), palindroms.end())->length();
    std::vector<std::string> result;
    std::copy_if(palindroms.begin(), palindroms.end(), std::back_inserter(result), 
    [max_length](const std::string& s)
    {
       return s.length() == max_length;
    });
    std::cout << boost::join(result, " ") << std::endl;
}
blanc_miami
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 16
17.11.2011, 13:27  [ТС]     нахождение палиндрома в строке #3
ForEveR, блин, тут код с векторами, а нужно просто через стринг...
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.11.2011, 13:32     нахождение палиндрома в строке #4
blanc_miami, Просто через string это делать идиотизм.
blanc_miami
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 16
17.11.2011, 13:37  [ТС]     нахождение палиндрома в строке #5
ForEveR, ну препод сказал что нужно функцию для опредееления палиндрома сначала сделать, ну а потом вывести..
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.11.2011, 13:48     нахождение палиндрома в строке #6
Да ноль проблем. Но это идиотизм.

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
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <sstream>
 
bool is_pal(const std::string& s)
{
   return s == std::string(s.rbegin(), s.rend());
}
 
std::size_t find_max_length(const std::string& s)
{
   std::stringstream ss(s);
   std::string temp;
   std::size_t max = 0;
   while (ss >> temp)
   {
      if (temp.length() > max)
      {
         max = temp.length();
      }
   }
   return max;
}
 
std::string return_max_pals(const std::string& s)
{
   std::stringstream ss(s);
   std::string temp;
   std::string temp_result;
   while (ss >> temp)
   {
      if (is_pal(temp))
      {
         temp_result += temp + ' ';
      }
   }
   std::size_t max_size = find_max_length(temp_result);
   std::stringstream ss1(temp_result);
   std::string result;
   while (ss1 >> temp)
   {
      if (temp.length() == max_size)
      {
         result += temp + ' ';
      }
   }
   return result;
}
 
int main()
{
    const std::string str = "hello and arora neten this is goog";
    std::cout << return_max_pals(str) << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 13:53     нахождение палиндрома в строке
Еще ссылки по теме:

Нахождение минимального элемента в строке матрицы C++
C++ Нахождение количества слов в строке
Нахождение строки в другой строке C++
Нахождение слова наибольшей длины в строке C++
Нахождение бОльшего элемента в строке матрицы C++

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

Или воспользуйтесь поиском по форуму:
blanc_miami
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 16
17.11.2011, 13:53  [ТС]     нахождение палиндрома в строке #7
ForEveR, спасибо огромное!!
Yandex
Объявления
17.11.2011, 13:53     нахождение палиндрома в строке
Ответ Создать тему
Опции темы

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