Разработка специализированного программного модуля для решения указанной задачи

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;

}

Страница:  1  2  3 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы