Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
systemofadown
0 / 0 / 0
Регистрация: 02.05.2011
Сообщений: 16
#1

Ошибка в программе, где создается шаблон класса "стек" - C++

13.05.2011, 14:56. Просмотров 1180. Ответов 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
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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stack>
using namespace std;
// Меню
void menu()
{setlocale(LC_ALL,"Russian");
cout<<"0: Выгрузить стек на дисплей"<<endl;
cout<<"1: Добавить машину в стек"<<endl;
cout<<"2: Удалить машину из стека"<<endl;
cout<<"3: Выход (Exit)"<<endl;
cout<<"Сделайте выбор: ";}
int main()
{setlocale(LC_ALL,"Russian");
int n=0,i,k,kol;
string num, numdel;
stack<string> mystack;// Номер машины
stack<string> temp;// Дополнительный стек (выгружаем номера)
stack<int> mystack2;// Кол-во раз, которое машины удалялась со стоянки
stack<int> temp2;// Дополнительный стек (выгружаем кол-во раз)
while (n<=0)
{cout<<"Введите кол-во автомобилей на стоянке: "; cin>>n;}
for(i=0;i<n;i++)
{
cout<<"Номер "<<i+1<<"-го автомобиля:";
cin>>num; mystack.push(num);
kol=0; mystack2.push(kol);
}
step_menu:
cout<<"-------------------------------------"<<endl;
menu();
cin>>k;
cout<<"-------------------------------------"<<endl;
switch (k)
{case 0: {while (!mystack.empty())
{
num = mystack.top();
mystack.pop();
kol = mystack2.top();
mystack2.pop();
cout<<num<<"\t"<<kol<<endl;
}
goto step_menu;
}
case 1:{
cout<<"Введите номер добавляемого автомобиля:";
cin>>num;
mystack.push(num);
kol=0;
mystack2.push(kol);
goto step_menu;
}
case 2:{
cout<<"Введите номер удаляемого автомобиля:";
cin>>numdel;
step2:
num = mystack.top();
kol = mystack2.top();
if ( (numdel.compare(num)!=0)&&(mystack.empty()) )
{ cout<<"Такого автомобиля нет в гараже. Удаление невозможно."<<endl; goto step_menu; }
if(numdel.compare(num)==0)
{ mystack.pop();
mystack2.pop();
cout<<"Автомобиль удален со стоянки."<<endl;
cout<<"Автомобиль удалялся "<<kol<<"-раз для обеспечения выезда других автомобилей."<<endl;
goto go_while; }
/* Заносим элементы из гаража
в вспомогательный стек */
temp.push(num);
temp2.push(kol+1);
mystack.pop();
mystack2.pop();
goto step2;
go_while:
/* Выгружаем элементы из вспо-
могательного стека в гараж */
while (!temp.empty())
{num = temp.top();
kol = temp2.top();
mystack.push(num);
mystack2.push(kol);
temp.pop();
temp2.pop();
}
goto step_menu;
}
case 3: exit(0);
default:
cout<<"<<<Ошибка меню! Сделайте правильный выбор>>>"<<endl;
goto step_menu;
}
return 0;
}
Добавлено через 20 часов 58 минут
Ребят, тут же много умников, помогите,пожалуйста
 Комментарий модератора 
У Вас CapsLock заело? Тема переименована.


Добавлено через 18 часов 12 минут
Кто-нибудь,хоть подсказку дайте, исправления сделаю самостоятельно
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2011, 14:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе, где создается шаблон класса "стек" (C++):

Шаблон класса "Стек" на основе массива - C++
Напишите шаблон класса &quot;Стек&quot;на основе массива.Предусмотрите функции добавление и извлечения элемента,удаление всего стека.Напишите класс...

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон" - C++
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список). При компиляции выдает...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Класс "Стек", нужны комментарии к программе - C++
Есть программа. Это класс стек. И мне нужно разобрать ее полностью: что за что отвечает и как это называется, почему оно здесь и с чем...

Патерн "прототип" не работает, выдаёт ошибку "недопустимый вызов нестатической ф-ции", где я в коде ошибка? - C++
Вот мой код... #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;vector&gt; #define vrom vector&lt;room&gt; using namespace std; ...

Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1" - C++
В программе есть два класса, для каждого создано по одному экземпляру. Почему-то в месте создания каждого из экземпляров выдает ошибку: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
13.05.2011, 17:27 #2
Лучше выровняйте ваш код, а то читать даже не хочется...
И предоставьте фрагмент, где вы удаляете элемент из стэка...

Я предлагаю сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    std::stack <std::string> Number_of_Cars;
    std::stack <std::string> Number_of_Cars_After;
 
    std::string Number;    //Номер машины, которая собирается отъехать
 
    //Пусть стэк с номерами машин заполнен, а другой стэк
    //оставим пустым
 
    while (!Number_of_Cars.empty())
    {
        if (Number_of_Cars.top() != Number)
            Number_of_Cars_After.push (Number_of_Cars.top());
        Number_of_Cars.pop();
    }
 
    //Стэк с номерами пуст, а другой заполнен всеми номерами, кроме
    //отъехавшей машины
 
    //Осталось только скопировать элементы дополнительного стэка в основной,
    //а сам дополнительный - отчистить
По крайней мере, подал идею!
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
14.05.2011, 02:13 #3
Тему нужно назвать извращение со стеком... Почему никому не приходит в голову, что раз это не поддерживается в стандарте, то это некорректно?...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 02:13
Привет! Вот еще темы с ответами:

В этой программе создается "матрица" из секунд.Как мне первый ряд чисел (секунд) присвоить масиву? - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Шаблон класса "Бинарное дерево" с насследованием - C++
Здравствуйте! Есть задание сделать шаблон класса &quot;Бинарное дерево&quot;. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std;...

Написать шаблон для класса "Рабочий" - C++
Всем доброго время суток! У меня возникла следующая проблема. Препод дал задание: написать шаблон для класса &quot;Рабочий&quot; с полями имени,...

Исправить ошибку компиляции "для использования класса шаблон требуется список аргументов шаблона" - C++
Решил создать класс List для задания двусвязного списка, и в самом начале компилятор начал ругаться на шаблон класса: error C2955:...


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

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

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