Разработка специализированного программного модуля для решения указанной задачи
if(numdel.compare(temp.num)==0)
{
cout<<"Автомобиль удален со стоянки."<<endl;
cout<<"Автомобиль удалялся "<<temp.kol<<"-раз для обеспечения выезда других автомобилей."<<endl;
goto go_while;
}
else
{
/* Формирование 1-ого элемента вспомога-
тельного стека(Выполняется один раз!) */
if (q==fa
lse) {goto ex;}
else q=false;
stack *top2 = first(temp.num, (temp.kol)+1 );
goto step2;
ex:
/* Заносим элементы из гаража
в вспомогательный стек */
push(&top2,temp.num,temp.kol+1);
goto step2;
go_while:
/* Выгружаем элементы из вспо-
могательного стека в гараж */
while(top2)
{
stack temp=pop(&top2);
push(&top,temp.num,temp.kol);
}
goto step_menu;
}
}
case 3: exit(0);
default:
cout<<"<<<Ошибка меню! Сделайте правильный выбор>>>"<<endl;
goto step_menu;
}
return 0;
}
Программный код файла my_fun.cpp
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class stack
{
public:
stack(string="",int=0); //Конструктор
string num;//Номер машины
int kol;//Кол-во раз которое машина удалялась со стоянки
stack *p;
};
stack::stack(string N, int K)
{ num=N; kol=K; }
//----------------------------------------
// Начальное формирование стека
stack *first(string num, int kol)
{
stack *pv = new stack;
pv->num = num;
pv->kol = kol;
pv->p = 0;
return pv;
}
//----------------------------------------
// Занесение в стек
void push(stack **top, string num, int kol)
{
stack *pv = new stack;
pv->num = num;
pv->kol = kol;
pv->p = *top;
*top = pv;
}
//----------------------------------------
// Выборка из стека
stack pop(stack **top)
{
stack *temp = new stack;
stack *pv = *top;
temp->num = pv->num;
temp->kol = pv->kol;
*top = (*top)->p;
delete pv;
return *temp;
}
//----------------------------------------
// Меню
void menu()
{
setlocale(LC_ALL,"Russian");
cout<<"0: Выгрузить стек на дисплей"<<endl;
cout<<"1: Добавить машину в стек"<<endl;
cout<<"2: Удалить машину из стека"<<endl;
cout<<"3: Выход (Exit)"<<endl;
cout<<"Сделайте выбор: ";
}
Второй вариант программы
Программный код файла kurs_with_include_stack.cpp
// kurs_with_include_stack.cpp: определяет точку входа для консольного приложения.
#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;
}
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности