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

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

Войти
Регистрация
Восстановить пароль
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
#1

Проверка полиндрома - C++

27.01.2013, 20:16. Просмотров 292. Ответов 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
#include <iostream>
#include <iterator>
#include <string>
#include <algorithm>
using namespace std;
bool Polin(string &st);
int main()
{
    string word;
    cout<<"Please, enter a word: ";
    while(cin>>word&&word!="quit")
    {
        if(Polin(word))
            cout<<"A word "<<word<<" is a polindrom.\n";
        else
            cout<<"A word "<<word<<" is NOT a polindrom.\n";
        cout<<"Please, enter a word (or  to quit): ";
    }
    cout<<"Bye!\n";
    system("pause");
    return 0;
}
bool Polin(string &st)
{
    string temp;
    copy(st.rbegin(), st.rend(), temp.begin());
    if(temp==st)
        return true;
    else
        return false;
}
Если у кого есть идеи, подскажите плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 20:16     Проверка полиндрома
Посмотрите здесь:

Нахождение полиндрома - Java SE
Дан текст, заканчивающийся точкой. Соседние слова разделены запятыми. Определить количество слов-палиндромов, которые начинаются с буквы...

Что быстрее, проверка на null, или проверка на тип перечисления в запросе? - 1С
вопрос такой. если несколько таблиц. сходных по структуре в запросе. в первой таблице типТовара = перечисление.тратата.набор во...

Проверка на совпадение + проверка строки на содержание спец. символов - Delphi
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую...

Проверка метабокса - не сохранять пост, если проверка не пройдена - WordPress
Всем здравствуйте. Изучаю метабоксы в WP. Столкнулся с проблемой проверки метабокса. Возьмем мой код сохранения данных метабокса: ...

Проверка данных в Access (проверка Статуса Кандидата) - MS Access
Всем доброго времени суток! Проблема такая. В бд есть таблица кандидатов, в ней есть номер телефона кандидата. Перед заполнением...

Visual C++ проверка ввода на число, проверка на кирилицу - C++
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. Этот код проверяет на буквы и знаки,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GggDrej
71 / 71 / 8
Регистрация: 21.01.2013
Сообщений: 147
27.01.2013, 20:56     Проверка полиндрома #2
эту функцию можно оформить так:
C++
1
2
3
4
5
6
7
bool p ( string str ){
    int q,s;
    s=str.length();
    for ( q=0; q<=s/2; q++ ) 
     if (str[q]!=str[s-q-1] ) return false;
    return true; 
}
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
27.01.2013, 21:07     Проверка полиндрома #3
Цитата Сообщение от Noobass Посмотреть сообщение
copy(st.rbegin(), st.rend(), temp.begin());
Всё дело в том, что вы пытаетесь произвести запись в строку нулевой длины. Для того чтобы добавить новые символы в конец контейнера, в качестве выходного итератора следует использовать специальную функцию back_inserter, возвращающую объект класса back_insert_iterator, перегруженный operator = которого вызывает метод push_back переданного ему объекта:
C++
1
copy(st.rbegin(), st.rend(), back_inserter(temp));
Хотя более эффективным является вариант с использование конструктора класса string
C++
1
string temp(st.rbegin(), st.rend());
Добавлено через 9 минут
Ну и не следует забывать про std::equal
C++
1
2
3
4
bool Polin(const string &st)
{    
    return std::equal(st.begin(), st.end(), st.rbegin());
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 17:37     Проверка полиндрома
Еще ссылки по теме:

Проверка internet connection. Проверка доступности сети - Программирование Android
Добрый день. Для проверки Internet Connection советуют делать что-то вроде: private boolean haveNetworkConnection() { ...


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

Или воспользуйтесь поиском по форуму:
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
28.01.2013, 17:37  [ТС]     Проверка полиндрома #4
Спасибо огромное, ребята!! Теперь все стало на свои места не только в программе, а и в моей голове .
З.Ы.: А что за equal? у меня и без него работает
Yandex
Объявления
28.01.2013, 17:37     Проверка полиндрома
Ответ Создать тему
Опции темы

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