Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
senderlender
5 / 5 / 1
Регистрация: 03.12.2013
Сообщений: 50
#1

Строки. Найти и удалить последнее слово, являющееся палиндромом - C++

08.12.2013, 16:27. Просмотров 713. Ответов 3
Метки нет (Все метки)

Помогите с задачей:

Дана строка, состоящая из одного или нескольких слов, отделённых друг от друга одним пробелом. Найти и удалить последнее слово, являющееся палиндромом.

Не могу понять вообще как делать, но логика такова, я беру последний элемент и проверяю не является ли он пробелом и так до первого пробела, что бы выделить 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 "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    string sent, memory, prov;
    bool indf;
    int size, count=0;
 
    cout<<"Enter the sentences"<<endl;
    cout<<"Sentences: ";
    getline(cin,sent);
 
    size=sent.length();
    for(int i=size; i>0; i--)
    {
        prov=sent.substr(i,1);
        indf=isspace(prov);
        if(indf==false)
            count++;
        memory=sent.substr(i,count);
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 16:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки. Найти и удалить последнее слово, являющееся палиндромом (C++):

Удалить из строки предпоследнее и последнее слово в с++ - C++
Вводится строка произвольного текста. Удалить из нее предпоследнее и последнее слово (слова разделены пробелами). Ребята, подскажите,...

Функция меняющая местами последнее слово строки на слово с указанным номером - C++
Помогите сделать функцию,которая в указанной строке меняет местами последнее слово и слово,номер которого определяется вторым параметром...

Определить, содержит ли последнее слово строки букву, с которой начинается первое слово - C++
2.) В динамической памяти размещена строка символов. Определить, содержит ли последнее слово строки букву, с которой начинается первое...

Удалить последнее слово и вывести - C++
Сделал удаления первого слова,подсобите кто-нибудь чтобы в добавок и последнее слово удаляло. Вот код : #include &lt;string.h&gt; #include...

Удалить последнее слово в строке - C++
Дана строка, состоящая из одного или нескольких слов, отделенных друг от друга одним пробелом. Найти и удалить последнее слово, являющееся...

Строка: удалить последнее слово из каждого предложения. - C++
Дан текст. Нужно удалить последнее слово из каждого предложения. Я делаю так. По порядку пребераю все элементы пока не встретиться...

3
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
08.12.2013, 17:01 #2
вот вам две функции, is_palindrome проверяет, является ли переданная строка палиндромом, tokenize - аналог split в java или .net. функцию tokenize я позаимствовал отсюда.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bool is_palindrome(std::string raw) {
    for (int i = 0, j = raw.length(); i < raw.length(); i++, j--) {
        if (raw.at(i) != raw.at(j))
            return false;
    }
 
    return true;
}
 
void tokenize(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters = ".") {
    std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
    std::string::size_type pos = str.find_first_of(delimiters, lastPos);
 
    while (std::string::npos != pos || std::string::npos != lastPos) {
        tokens.push_back(str.substr(lastPos, pos - lastPos));
        lastPos = str.find_first_not_of(delimiters, pos);
        pos = str.find_first_of(delimiters, lastPos);
    }
}
2
zarko97
279 / 39 / 0
Регистрация: 11.10.2015
Сообщений: 405
18.04.2017, 19:49 #3
вот так ещё:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
std::string some = "bab bah bac assa dd qw";
std::istringstream iss(some);
std::multiset<std::string, std::function<bool(std::string const&)>> mset(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>(), [] (auto const& s)
{
    while (s.begin() != s.end() && s.begin() != --s.end()) {
        if (*s.begin()++ != *s.end())
            return false;
    }
    return true;  
});
auto new_pos = mset.size() - 1;
mset.erase(new_pos);
for (auto && val : mset)
   std::cout << val << std::endl;
0
повар1
113 / 91 / 35
Регистрация: 24.02.2017
Сообщений: 365
Завершенные тесты: 1
18.04.2017, 21:41 #4
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
#include <string>
 
int main()
{
string stroka;
char *p,s[80],s1[80];
int t=0;
getline(cin, stroka);
strcpy(s,stroka.c_str());
 stroka.clear();
strcpy(s,strrev(s));
 
p = strtok(s," ");
strrev(strcpy(s1,p));
if(strcmp(p,s1)==0)
     t=1;
  else
    stroka+=p;
do{
    p = strtok('\0'," ");
    if(p)
    {
     strrev(strcpy(s1,p));
     if(strcmp(p,s1)==0 && t==0)
        t=1;
     else
  {
    stroka+=" ";
    stroka+=p;
    }
    }
  } while(p);
stroka=strrev(strcpy(s,stroka.c_str()));
cout<<stroka;
 
system("pause>NUL");
    return 0;
}
0
18.04.2017, 21:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2017, 21:41
Привет! Вот еще темы с ответами:

Удалить в строке последнее слово и удвоить предпоследнее - C++
Доброго Времени Суток! Не могу решить 2 задачи со строками,возможно кто нибудь сможет помочь,вдруг у кого нибудь осталась задача.. Буду...

Строки. Является ли слово палиндромом - C++
Дана строка является ли слово полендром

Удалить в каждой строке текстового файла последнее слово - C++
Выполнить обработку текстового файла. Определить кол-во предложений в исходном тексте.как реализовать ?Удалить в каждой строке последнее...

Строки в файлах (вывести из каждой строки последнее слово) - C++
выводит из каждой строки последнее слово (строк может быть много) ... вот что я сделал, но у меня выводит только последнее слово в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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