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

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

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

Удалить из слова предыдущие вхождения последней буквы - C++

17.10.2013, 23:02. Просмотров 841. Ответов 6
Метки нет (Все метки)

Вот, попыталась соорудить:
C++
1
word.replace(word[word.length - 1], word.empty()) + word[word.length - 1]
Компилироваться не хочет:
[BCC32 Error] Unit2.cpp(85): E2235 Member function must be called or its address taken
[BCC32 Error] Unit2.cpp(85): E2285 Could not find a match for 'string::replace(undefined,bool)'

Подскажите, пожалуйста, как можно исправить.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 23:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из слова предыдущие вхождения последней буквы (C++):

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

Преобразовать каждое слово в строк, заменив в нем все предыдущие вхождения его последней буквы на символ «.» - C++
Дана строка, состоящая из слов, набранных заглавными бук-вами и разделенных пробелами (одним или несколькими). Преобразо-вать каждое слово...

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

Удалить из слова все буквы, совпадающие с последней буквой. - C++
Помогите решить задачу! Удалите из слова все буквы, совпадающие с последней буквой. Заранее благодарен!

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
17.10.2013, 23:10 #2
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
 
int main()
{
    std::string s = "eniki";
    char c = s.back();
    s.erase(s.find(c), 1);
    std::cout << s << std::endl;
}
0
Locust
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 82
18.10.2013, 00:00  [ТС] #3
[BCC32 Error] Unit2.cpp(87): E2316 'back' is not a member of 'string'

Добавлено через 3 минуты
Дурацкий вопрос: а можно как-то строку по одному символу считывать? Так и до последнего дойти можно.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
18.10.2013, 00:12 #4
back стал методом string лишь в С++11
тогда так:
C++
1
char c = *s.rbegin();
0
Locust
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 82
18.10.2013, 00:46  [ТС] #5
Спасибо, помогло.

Только теперь вот такая штука: при тестировании удаляется только первое вхождение буквы в слово. Решила, что можно просматривать слово word.length()-1 раз, тогда при каждом проходе будет будет удаляться первая из нужных букв, так дойдём до конца. Сработало на простецком файле, содержащем в одну строчку dadad ablabl. С "dadad" всё как надо, а вот у "ablabl" удалился и последний символ.

Ещё один тестик выглядел так:

fdghdkfgdg ijffdf/vrrr
olokao.

В конце вылезают окна с воплями (окна прилагаются), открывается xstring internal header, а в нём выделяется строка _String_base::_Xran()
Что это значит? Где я накосячила и как исправлять?
0
Миниатюры
Удалить из слова предыдущие вхождения последней буквы  
Изображения
 
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
18.10.2013, 01:34 #6
При количестве итераций цикла с телом
Цитата Сообщение от MrGluck Посмотреть сообщение
char c = s.back();
s.erase(s.find(c), 1);
std::cout << s << std::endl;
}
превышающим размер объекта std::string, идет вылет т.к. выходим за границы слова (пытаемся удалить букву из пустой строки). Если число итераций равно длине слова, то строка очищается, если меньше, то остаются буквы.

Добавлено через 12 секунд
Покажите код, которым тестируете
0
Locust
1 / 1 / 0
Регистрация: 09.11.2012
Сообщений: 82
18.10.2013, 06:45  [ТС] #7
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
void __fastcall TForm2::Button3Click(TObject *Sender)
{
    string word;
    char c;
    Memo1->Lines->Clear();
 
    while(!input.eof())
        {
            input.get(c);
            if(IsCharAlpha(c)&&input)
                word+=c;
            else
            {
                if(!((IsCharAlphaNumeric(c)&&input)||(ispunct(c)&&input)))
                {
                    char q = *word.rbegin();
                    for(int i=1;i<word.length()-1;i++)
                         word.erase(word.find(q), 1);
                    Memo1->Lines->Add(word.data());
                    word.clear();
                }
            }
        }
 
    input.close();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 06:45
Привет! Вот еще темы с ответами:

Удалить вхождения первой буквы в словах предложения - C++
нужно составить программу , которая удаляет вхождения первой буквы в словах предложения,помогите на c++:cry:

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

После последней буквы каждого слова вставить точку - C++
помогите пожалуйста!!!!! очень нужно сегодня!!!!!!!! Работа со строками. Разработать программы для двух задач. Для задач...

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


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

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

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