0 / 0 / 0
Регистрация: 03.09.2017
Сообщений: 10
1

Stack: реализовать структуру данных "стек"

06.04.2018, 18:50. Показов 6206. Ответов 1
Метки нет (Все метки)

Не проходит один тест в задаче. Пишет: Неправильный формат вывода

Вот задача:

Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push n
Добавить в стек число n (значение n задается после команды). Программа должна вывести ok.
pop
Удалить из стека последний элемент. Программа должна вывести его значение.
back
Программа должна вывести значение последнего элемента, не удаляя его из стека.
size
Программа должна вывести количество элементов в стеке.
clear
Программа должна очистить стек и вывести ok.
exit
Программа должна вывести bye и завершить работу.

Перед исполнением операций back и pop программа должна проверять, содержится ли в стеке хотя бы один элемент. Если во входных данных встречается операция back или pop, и при этом стек пуст, то программа должна вместо числового значения вывести строку error.

Вот мой код:

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <string>
#include <stack>
#include <algorithm>
#include <cmath>
using namespace std;
long long fhash(string s)
{
    long long H=0;
    for (int i = 0; i < s.size(); i++)
    {
        H += int(s[i]) * pow(2, s.size() - 1 - i);
    }
    return H;
}
int main()
{
    long long a,si;
    string in,an,ss;
    stack<long long> d;
    while (in != "exit")
    {
        cin >> in;
        switch (fhash(in))
        {
            case 1698:  // после case я вручную перевел строки команд задачи в хэши (как в задаче, сначала push, потом pop и тд)
                cin >> a;
                d.push(a);
                an += "ok"; an+='\n';
                break;
            case 782:
                if (d.empty())
                {
                    an += "error";
                    an += '\n';
                }
                else
                {
                    ss = "";
                    si = d.top();
                    while (si / 10 != 0)
                    {
                        ss += char(int('0') + si % 10);
                        si /= 10;
                    }
                    ss += char(int('0') + si % 10);
                    reverse(ss.begin(), ss.end());
                    an += ss; an += '\n';
                    d.pop();
                }
                break;
            case 1477:
                if (d.empty())
                {
                    an += "error";
                    an += '\n';
                }
                else
                {
                    ss = "";
                    si = d.top();
                    while (si / 10 != 0)
                    {
                        ss += char(int('0') + si % 10);
                        si /= 10;
                    }
                    ss += char(int('0') + si % 10);
                    reverse(ss.begin(), ss.end());
                    an += ss; an += '\n';
                }
                break;
            case 1685:
                ss = "";
                si=d.size();
                while (si / 10 != 0)
                {
                    ss += char(int('0') + si % 10);
                    si /= 10;
                }
                ss += char(int('0') + si % 10);
                reverse(ss.begin(), ss.end());
                an+=ss; an += '\n';
                break;
            case 3160:
                while (d.size() != 0)
                    d.pop();
                an += "ok"; an += '\n';
                break;
            default:
                an += "bye";
                break;
 
        }
    }
    cout << an;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2018, 18:50
Ответы с готовыми решениями:

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес"
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: ...

Реализовать структуру данных "Линейный список"
Всем привет. Не получается написать программу к следующему заданию. На словах я понимаю, как это...

Реализовать структуру данных "очередь"
Написать программу, содержащую описание очереди и моделирующую работу очереди, реализовав все...

абстрактные типы данных "СТЕК" и "ОЧЕРЕДЬ"
тема:абстрактные типы данных &quot;СТЕК&quot; и &quot;ОЧЕРЕДЬ&quot; Вопросы: 1) разработать...

1
473 / 425 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
07.04.2018, 00:00 2
Цитата Сообщение от Vladik_ Посмотреть сообщение
Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы.
Тебя просят реализовать, а не использовать готовый контейнер.
Цитата Сообщение от Vladik_ Посмотреть сообщение
Не проходит один тест в задаче. Пишет: Неправильный формат вывода
Какой тест, где валится?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2018, 00:00
Помогаю со студенческими работами здесь

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией")
Описать структуру с именем &quot;ORDER&quot;, содержащий следующие поля: &quot;Счет плательщика&quot;; &quot;Счет...

Реализовать класс "Стек" с перегруженными операциями: +, *, =, +=, --, ()
Доброго времени суток! Помогите, пожалуйста, сделать: 3.2) Бинарная операция. Создать объект...

Ошибка: "Unhandled exception: Stack cookie instrumentation code detected a stack-based buffer overrun"
Не могу понять почему значение ChoiceOfPlayer меняется и почему NumberOfRow и NumberOfColumn всегда...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru