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

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

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

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

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

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

Строка состоит из слов. Найти все самые длинные слова-палиндромы и занести их в новую строку. Слова в новой строке должны разделяться ровно одним пробелом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос нахождение палиндрома в строке (C++):

Нахождение палиндрома - C++
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Нахождение палиндрома. - C++
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Нахождение палиндрома в заданном диапазоне - C++
Помогите пожалуйста с кодом, нужно найти все палиндромы на заданном диапазоне от А до С. Палиндром – такое сочетание цифр, которые читаются...

Поиск палиндрома в строке символов - C++
Условие задачи: 1) Задан символьный массив F(N), N<=260. Найти отрезок массива максимальной длины, в котором первый символ равен...

Нахождение серий символов в строке - C++
Приветствую, господа кодеры! При написании диплома появилась некоторая проблемка: Есть строка нулей и едениц (случайно...

Нахождение символов и замена их в строке - C++
Программа не работает и выдает - " terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::replace:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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;
}
blanc_miami
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 16
17.11.2011, 13:53  [ТС] #7
ForEveR, спасибо огромное!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 13:53
Привет! Вот еще темы с ответами:

Нахождение количества слов в строке - C++
Задается строка S состоящая из латинских букв и пробелов. Найти количество слов в этой строке.

Нахождение строки в другой строке - C++
.cpp: #include&lt;string&gt; using namespace std; void Poisk_Street() { ifstream fin; string street, fail; cout &lt;&lt; endl &lt;&lt;...

Нахождение отрицательных элементов в строке - C++
Программа должна считать количество отрицательных элементов в строке ,в который есть хотя бы один нулевой элемент. Данный код выводит...

Нахождение слова наибольшей длины в строке - C++
Строка состоит из слов,разделенных одним или несколькими пробелами.Найдите слово наибольшей длины.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.11.2011, 13:53
Ответ Создать тему
Опции темы

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