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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2017, 20:15   #1
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию В новый стек записать все слова, которые не заканчиваются на заданную букву

Создать стек, содержащий слова. В новый стек записать все слова, которые не заканчиваются на заданную букву. Порядок вывода элементов результирующего стека на экран должен совпадать с порядком ввода элементов. Например, если введены aa sab aaa sss qqq saa fff и заданная буква a, то результат должен быть sab sss qqq fff.
Вот примерный код, но по идеи он записывает слова которые не начинаются на заданную букву. И выдает ошибку на строчку stack *temp = s->next; (строчка из string pop), помогите пожалуйста исправить ошибки и сделать чтобы выводились слова которые не заканчиваются на заданную букву.

Код:
#include <iostream>
#include <string>
using namespace std;
struct stack {
    string inf;
        stack *next;
};
void push (stack *&s,string val)
{
    stack *ins = new stack;
    ins->inf = val;
    ins->next = s;
    s = ins;
}
string pop(stack *&s)
{
    stack *temp = s->next;
    string val = s->inf;
    s = temp;
    delete s;
    return val;
}
bool empty(stack *s)
{
    return (s == NULL);
}
int main()
{
    int n;
    string x;
    stack *s = NULL;
    cout << "Vvedite kol-vo elementov";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cout << "Vvedite elements stack:\n";
        cin >> x;
        push(s, x);
    }
        char y;
        cout << "Bukva:";
        cin >> y;
    
    
        
        stack *temp = NULL;
        while (!empty(s))
        {
            x = pop(s);
            if (x[0] != y)
                push(temp,pop(s));
        }
        while (!empty(temp))
            cout << pop(temp) << " ";
     system("pause");
    return 0;
    }
ggjgj вне форума Ответить с цитированием
Старый 21.04.2017, 20:26   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Каша....жуткая каша.
1. Сделайте класс стека (пока можете для тренировки std::stack)
2. Когда вы будете копировать 1й во 2й ....то во 2м получатся все элементы "наоборот", поэтому
3. Нужно еще скопировать из 2 в 3, что бы опять их вывернуть, вот это уже результат.

копирование выглядит примерно так

for (ДЛЯ_ВСЕХ_STACK1)
if (БУКВЫ_НОРМ)
{
stack2.push(stack1.pop)
}

for (ДЛЯ_ВСЕХ_STACK2)
stack1.push(stack2.pop)

вот теперь stack1 соотв. порядку

Последний раз редактировалось alexzk; 21.04.2017 в 20:28.
alexzk вне форума Ответить с цитированием
Старый 21.04.2017, 20:33   #3
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

К сожалению ваши подсказки я совсем не понимаю, делаю по примерам преподавателя..
ggjgj вне форума Ответить с цитированием
Старый 21.04.2017, 23:52   #4
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Цитата:
Сообщение от ggjgj Посмотреть сообщение
К сожалению ваши подсказки я совсем не понимаю, делаю по примерам преподавателя..
Стек это ....представьте 2 тупика с вагонами. Вот они заехали все в 1, теперь вам нужно их переставить, так, чтобы убрать 2й вагон с конца, а порядок сохранить. - вот здесь и будет двойное копирование - перегнать в тупик 2, изъять нужные вагоны, перегнать обратно в 1.
alexzk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобрать задачу в C++. Ищет слова которые содержат заданную букву Owi Общие вопросы C/C++ 1 03.12.2015 00:00
Записать в файл слова из текста, считанного из первого файла, которые начинаются и заканчиваются заданными буквами (Паскаль) makgs123 Помощь студентам 0 11.12.2012 17:07
Подсчет слов которые начинаются и заканчиваются на одну букву cutie_girl Microsoft Office Excel 1 05.11.2012 02:54
при вводе текста нужно выкинуть все слова которые заканчиваются на гласные (С++) dembel11 Помощь студентам 0 10.05.2011 12:48
скопировать во второй файл слова которые начинаются и заканчиваются на одну букву Екатерина А. Паскаль, Turbo Pascal, PascalABC.NET 2 23.12.2008 15:08