Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
1

Работа со стеком

04.12.2014, 12:41. Просмотров 717. Ответов 3
Метки нет (Все метки)

Помогите исправить ошибки!
Пусть символ # определен в текстовом редакторе как стирающий символ Backspace, т.е. строка abc#d##c в действительности является строкой ac. Дан текст, в котором встречается символ #. Преобразовать его с учетом действия этого символа. Задачу требуется решить с использованием стека.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<iostream>
#include <fstream>
#include <string>
#include<sstream>
using namespace std;
ifstream in("input.txt");
ofstream out("output.txt");
class Stack
{struct Element
{char inf;
Element *next;
Element (char x,Element *p):inf(x),next(p)
{}
};
Element *head;
public:
Stack():head(0)
{}
bool Empty()
{ return head==0;}
char Pop()
{if(Empty())
{return 0;}
Element *r=head;
char i=r->inf;
head=r->next;
delete r;
return i;
}
void Push(char data)
{
head=new Element(data,head);
}
char Top()
{
if (Empty())
{return 0;}
else
{return head->inf;
}
}
};
int main()
{
    char s;
int n=0;
Stack *t=new Stack[n];
Stack m;
while(in.peek()!=EOF)
{in>>s;
int i=0;
{   t[i].Push(s);
    i++;
    }
    n++;
    }
for( int i=0;i<n;i++)
{
    if((t[i].Pop()!='#')&&(t[i-1].Pop()!='#'))
    {
m.Push(t[i].Pop());
m.Push(t[i-1].Pop());
}}
while (!m.Empty())
{
cout<<m.Pop();
}
in.close();
out.close();
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2014, 12:41
Ответы с готовыми решениями:

Работа со стеком.
Интересует вопрос: для использовония функций pop() и push() нужно ли подключать заголовочный файл...

Работа со стеком
Привет всем. Помогите пожалуйста написать прогу. Постороить класс для работы со стеком.Элементы...

Работа со стеком
Ребят, помогите пожалуйста с заданиями: Задание 1 Реализовать стек списком. Все стандартные...

Работа со СТЕКОМ!!!!!!:)
Создать класс для работы со стеком. Элемент стека – символ. --- Сформировать два стека,содержащие...

3
Эксперт С++
1889 / 1237 / 354
Регистрация: 16.05.2013
Сообщений: 3,239
Записей в блоге: 6
04.12.2014, 13:04 2
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
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
#include <algorithm>
#include <iterator>
int main() {
    std::stack<char> coll;
    std::ifstream file("input.txt");
    char ch;
    while(file.get(ch)) {
        if((ch == '#') && (!coll.empty()))
            coll.pop();
        else
            coll.push(ch);
 
    }
    std::vector<char> vect(coll.size());
    std::vector<char>::reverse_iterator rIter = vect.rbegin();
    while(!coll.empty()) {
        *rIter++ = coll.top();
        coll.pop();
    }
    std::copy(vect.begin(), vect.end(), std::ostream_iterator<char>(std::cout));
    return 0;
}
1
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
04.12.2014, 13:37  [ТС] 3
к сожалению, использовать вектора нельзя
0
Эксперт С++
1889 / 1237 / 354
Регистрация: 16.05.2013
Сообщений: 3,239
Записей в блоге: 6
04.12.2014, 14:14 4
Egorrr, вектор для вывода, но если это уж такая большая проблемма..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <stack>
int main() {
    std::stack<char> coll;
    std::ifstream file("input.txt");
    char ch;
    while(file.get(ch)) {
        if((ch == '#') && (!coll.empty()))
            coll.pop();
        else
            coll.push(ch);
 
    }
    const int SIZE = coll.size();
    char * ptr = new char[SIZE + 1];
    ptr[SIZE] = '\0';
    for(int i = SIZE - 1; i >= 0 ; --i, coll.pop())
        ptr[i] = coll.top();
    std::cout << ptr;
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2014, 14:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа со стеком
Создать программу, реализовав работу со структурой данных - стеком. В программе реализовать...

работа со стеком
попалась такая задача: создать стек для положительных и отрицательных чисел. максимальный размер...

Работа со стеком
Люди...Помогите...Напишите пожалуйста библиотеку для работы со стеком и поясните как и что нужно...

Работа со стеком
Задача: Написать программу которая создает стек целых чисел считываемых из файла и удаляет из него...


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

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

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