1 Саттер Герб. Стандарты программирования на C++. 101 правило и рекомендация / Андрей Александреску. – М. : Вильямс, 2005.
2 Дейтел Харви. Как программировать на С++ / Пол Дейтел – М. : Бином, 2003. 3 Шилдт Герберт. Самоучитель С++. – СПб. : БХВ-Петербург, 2003.Приложение A
Создать шаблон класса "стек". Написать программу, моделирующую процесс прибытия и отъезда машин с использованием этого шаблона класса.
Гаражная стоянка имеет одну стояночную полосу, причем въезд и выезд находятся в одном конце полосы. Если владелец автомашины приходит забрать свой автомобиль, который не является ближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машина данного владельца выводится со стоянки, а другие машины возвращаются на стоянку в исходном порядке.
Прибытие или отъезд автомашины задается командной строкой, которая содержит признак прибытия или отъезда и номер машины. Программа должна выводить сообщение при прибытии или выезде любой машины. При выезде автомашины со стоянки сообщение должно содержать число раз, которое машина удалялась со стоянки для обеспечения выезда других автомобилей.
Приложение Б
Данный программный модуль предназначен для моделирования процесса прибытия машин в гаражную стоянку и их отъезда.
Работа программы начинается с ее запуска. Для этого необходимо запустить файл my_kurs(stack).exe
После выполнения всех вышеперечисленных действий появится окно выполнения программы. Далее работа продолжится с главным меню, в котором будут предложены варианты выполнения программы.
Приложение В
Первый вариант программы
Программный код файла my_kurs(stack).cpp
// my_kurs(stack).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 *first(string, int);
void push(stack **top, string, int);
stack pop(stack **top);
void menu();
/////////////////////////////////////////////////////
int main()
{ setlocale(LC_ALL,"Russian");
stack mashin;
int i=0,n=0,k;
// Проверка на кол-во авто (n>1)
while (n<=0)
{
cout<<"Введите кол-во автомобилей на стоянке: ";
cin>>n;
}
cout<<"Номер 1-го автомобиля:";
cin>>mashin.num;
mashin.kol=0;
stack *top = first(mashin.num, mashin.kol); //Начальное формирование стека
for(i=1;i<n;i++)
{
cout<<"Номер "<<i+1<<"-го автомобиля:";
cin>>mashin.num;
mashin.kol=0;
push(&top,mashin.num,mashin.kol);
}
step_menu:
cout<<"-------------------------------------"<<endl;
menu();
cin>>k;
cout<<"-------------------------------------"<<endl;
switch (k)
{case 0: {while (top)
{stack temp=pop(&top);
cout<<temp.num<<"\t"<<temp.kol<<endl;
}
goto step_menu;
}
case 1:{
cout<<"Введите номер добавляемого автомобиля:";
cin>>mashin.num;
mashin.kol=0;
push(&top, mashin.num,mashin.kol); goto step_menu;
}
case 2:{
cout<<"Введите номер удаляемого автомобиля:";
string numdel;
cin>>numdel;
bool q=true;
step2:
stack temp=pop(&top);
if ((numdel.compare(temp.num)!=0)&&(top==NULL))
{cout<<"Такого автомобиля нет в гараже. Удаление невозможно."<<endl; goto step_menu;}
if(numdel.compare(temp.num)==0)
{
cout<<"Автомобиль удален со стоянки."<<endl;
cout<<"Автомобиль удалялся "<<temp.kol<<"-раз для обеспечения выезда других автомобилей."<<endl;
goto go_while;
}
else
{
/* Формирование 1-ого элемента вспомога-
тельного стека(Выполняется один раз!) */
if (q==false) {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;
}
... Architect, Visible Analyst Workbench, EasyCASE), так и новые версии и модификации перечисленных систем. 3 Глава. Разработка концептуальной модели информационной системы для поддержки принятия управленческих решений при формировании маркетинговой стратегии региона Процесс создания и внедрения любой ИС принято разделять на четыре последовательные фазы: анализ, глобальное проектирование ( ...
... многих странах (в том числе развитых) применение компьютеров в управлении городскими территориями, ведении кадастра, анализе рыночных тенденций в рамках города весьма ограничено. В связи с этим выделим причины, по которым автоматизация решения типовых задач управления региональной недвижимостью Тульской области, как, впрочем, и других городов России, представляется весьма разумной: все материалы ...
... всех показателей рыночной устойчивости. Такая тенденция с точки зрения кредиторов повышает гарантированность предприятием своих обязательств. Поэтому предприятие имеет возможность реализовать свой бизнес-план по выпуску новой продукции. 3. Бизнес-план производственного предприятия ООО «Украина» по производству соевого молока 3.1. Резюме Предприятие ООО «Украина», организованно в 1997 году и ...
... недостаточно). Возможно включение комплекса в план учебного процесса, для обучения студентов. 2. Специальная часть разработка программного обеспечения для организации интерфейса программно-методического комплекса 2.1 Разработка технического задания на реализацию специальной части дипломного проекта Наименование программного изделия - "Интерфейс программно - методического комплекса для ...
0 комментариев