Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2016, 23:03   #1
Jed1kiss
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию Удаление последнего символа в каждом слове - C++

Помогите пожалуйста дописать программу, должно удалять в каждом слове последний символ.
Ругается на erase, так как он не работает с char, менял на string, все равно ошибка.
Спасибо.


Код:
#include <iostream>
#include <cstring>
 
using namespace std;
 
char str[256];
void inputstr(char* str);
void outputstr(char* str);
int main()
{
    inputstr(str);
    outputstr(str);
    return 0;
}
 
void inputstr(char* str)
{
    cout << "Vvedute words with backspace" << endl;
    cin.getline(str, 256);
}
 
void outputstr(char* str)
{
 
    for (int i = 0; i < strlen(str); i++)
    {
 
        if (str[i] == ' ')
            str.erase(i - 1, 1);
    }
    cout << "Words without last letter" << endl << str;
}
Jed1kiss вне форума Ответить с цитированием
Старый 01.12.2016, 23:37   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Таки поменяй везде тип с char* на стринг; вместо cstring заинклуди просто string; передай параметр в inputstr по ссылке (string&) и вместо cin.getline(str...) напиши getline(cin, str);

После этого оно скомпилируется и даже почти будет работать - будет ломаться если строка начинается с пробела, не будет удалятьбукву в последнем слове и тд, на это нужно отдельные проверки добавить.
Son Of Pain вне форума Ответить с цитированием
Старый 02.12.2016, 12:47   #3
Jed1kiss
 
Регистрация: 24.12.2015
Сообщений: 4
По умолчанию

Спасибо за помощь, можете еще подсказать с strlen, после изменений начало писать
'strlen' was not declared in this scope| Вроде strlen входит в библиотеку <string>

Код:
#include <iostream>
#include <string>
using namespace std;

char str[256];
void inputstr(string str);
void outputstr(string str);
int main()
{
    inputstr(str);
    outputstr(str);
    return 0;
}

void inputstr(string str)
{
    cout << "Vvedute words with backspace" << endl;
    getline(cin, str);
}

void outputstr(string str)
{

    for (int i = 0; i < strlen(str); i++)
    {

        if (str[i] == ' ')
            str.erase(i - 1, 1);
    }
    cout << "Words without last letter" << endl << str;
}
Jed1kiss вне форума Ответить с цитированием
Старый 02.12.2016, 13:11   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У стринга есть size (он же length) не надо за него считать, тем более так.

P.S. Если хочется развития, то почитайте про std::remove_if, например.

Последний раз редактировалось p51x; 02.12.2016 в 13:13.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление последнего символа zorra123 C# (си шарп) 5 26.01.2014 01:06
Определить количество букв в каждом слове (Паскаль) afdotya Паскаль, Turbo Pascal, PascalABC.NET 0 16.10.2013 19:26
Строка. Удалить последние буквы в каждом слове c# gvozdik12 Помощь студентам 1 17.03.2013 20:56
в каждом слове обратить порядок букв Maksik Паскаль, Turbo Pascal, PascalABC.NET 7 20.10.2009 20:24
Установить сколько согласных букв в каждом слове данного предложения ivan89 Общие вопросы C/C++ 2 12.11.2008 15:29