Целое положительное число
Рисунок 3 – Форма ввода
входных данных
Выводится на экран с
помощью оператора cout
( cout<<temp.num<<"\t"<<temp.kol<<endl;
)
Рисунок 4 – Форма вывода
данных
5.
Выбор стратегии тестирования и разработка тестов
Для того чтобы
подтвердить работоспособность системы необходимо провести тестирование.
Рисунок 6 – Результат
программы (Первый тест)
Рисунок 7 – Результат
программы (Второй тест)
Результаты двух тестов соответствуют
действительности, что подтверждает
работоспособность системы.
Заключение
В результате проведенной
работы была разработана программа, учитывающая все требования, приведенные к
выполнению данной работы.
Создан шаблон класса "стек".
Прибытие или отъезд автомашины задается командной строкой, которая содержит
признак прибытия или отъезда и номер машины. Программа выводит сообщение при
прибытии или выезде любой машины. При выезде автомашины со стоянки сообщение
содержит число раз, которое машина удалялась со стоянки для обеспечения выезда
других автомобилей.
Список
литературы
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;
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);
//Конструктор
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<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:
goto
step_menu;
}
return
0;
}
Похожие работы на - Современное состояние и перспективы развития инвестиционной деятельности в РФ
|