Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

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

Создать стек, содержащий слова. В новый стек записать все слова, которые не заканчиваются на заданную букву. Порядок вывода элементов результирующего стека на экран должен совпадать с порядком ввода элементов. Например, если введены 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, 21:26   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 108
Репутация: 10
По умолчанию

Каша....жуткая каша.
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 в 21:28.
alexzk вне форума   Ответить с цитированием
Старый 21.04.2017, 21:33   #3
ggjgj
Форумчанин
 
Регистрация: 25.10.2016
Сообщений: 55
Репутация: 10
По умолчанию

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобрать задачу в C++. Ищет слова которые содержат заданную букву Owi Общие вопросы C/C++ 1 03.12.2015 01: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
скопировать во второй файл слова которые начинаются и заканчиваются на одну букву Екатерина А. Паскаль 2 23.12.2008 16:08




16:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru