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

Вывести на экран все слова палиндромы - C++

Восстановить пароль Регистрация
 
Оксана Курбатов
 Аватар для Оксана Курбатов
18 / 0 / 1
Регистрация: 30.11.2011
Сообщений: 33
04.03.2013, 23:51     Вывести на экран все слова палиндромы #1
Помогите разобраться с задачей. по моей логике вроде верно но всё равно не работает(

Вывести на экран все слова палиндромы содержащиеся в заданном сообщении
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
#include "iostream"
#include "string"
using namespace std;
int main()
{
    string str,slovo;
    int a=1;
    string::size_type k=0,pos=0;
    cout<<"Enter string "<<endl;
    getline(cin,str);
    str=str+' ';
    k=str.find(" ",pos);
    while(k!=string::npos)
    {
                          slovo=str.substr(pos,k-pos);
                          for(unsigned int i=0; i<str.length()/2; i++)
                          if(slovo[i]!=slovo[str.length()-i-1]) { a=0; break;}
                          pos=k+1;
                          k=str.find(" ",pos);
                          cout<<slovo<<endl;
                          }
                          
    system("pause");
    return 0;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2013, 23:51     Вывести на экран все слова палиндромы
Посмотрите здесь:

C++ Вывести на экран все слова с четными номерами.
[C++] вывести на экран все слова, содержащие букву k C++
C++ Строка: вывести на экран все слова сообщения, состоящие из n букв.
C++ Вывести на экран все четные палиндромы
C++ вывести на экран все слова которые начинаются с заглавной буквы
Дана строка Найти и вывести все слова палиндромы C++
Дана строка, содержащая разделенные пробелами слова, вывести все слова-палиндромы C++
C++ Вывести на экран все числа-палиндромы (числа, которые одинаково читаются как слева так и справа)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
05.03.2013, 00:33     Вывести на экран все слова палиндромы #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main() 
{
    std::cout<<"Enter text(ctrl+Z to stop):\n";
    std::vector<std::string> v( (std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
    auto polindrom = [](const std::string& s)
    {
        if (std::equal(s.begin(),s.begin()+s.size()/2, s.rbegin())) std::cout<<s<<"\n";  
    };
    std::cout<<"\n##################################\n\n";
    std::for_each(v.begin(), v.end(), polindrom);
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
05.03.2013, 02:45     Вывести на экран все слова палиндромы #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <iostream>
 
typedef std::vector<std::string> StringVector;
 
StringVector split(const std::string& str, const std::string& delim)
{
    StringVector dest;
    auto i = str.find_first_not_of(delim);
 
    while(i != std::string::npos)
    {
        auto j = str.find_first_of(delim, i);
        if(j == std::string::npos)
        {
            dest.push_back(str.substr(i));
            break;
        }
 
        const auto n = j - i;
        dest.push_back(str.substr(i, n));
        i = str.find_first_not_of(delim, i + n);
    }
 
    return dest;
}
 
bool ispalindrome(const std::string& s)
{
    auto mid = s.begin() + s.size() / 2;
    return std::equal(s.begin(), mid, s.rbegin());
}
 
void display_all_palindromes(const StringVector& v)
{
    typedef std::ostream_iterator<std::string> Iter;
    std::copy_if(v.begin(), v.end(), Iter(std::cout, "\n"), ispalindrome);
}
 
int main()
{
    std::string str;
    std::cout << "input string: ";
    std::getline(std::cin, str);
    display_all_palindromes(split(str, " ,.:;?!"));
}
Yandex
Объявления
05.03.2013, 02:45     Вывести на экран все слова палиндромы
Ответ Создать тему
Опции темы

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