Х,у-координаты на экране, rep-номер в очереди,
k-требуемое число фотографий, firma-фирма }
var
s:string; {Для преобразования числа в строку}
coler:integer;{Цвет закраски костюма фоторепортера}
begin
if firma='obk' then coler:=blue else
if firma='pp' then coler:=red else
coler:=green;
setlinestyle(0,0,1);
setcolor(5);
circle(x,y+5,10); {голова}
circle(x-3,y+1,1); {глаза}
circle(x+3,y+1,1);
setfillstyle(1,8);
floodfill(x+3,y+1,5);
floodfill(x-3,y+1,5);
line(x,y+3,x,y+6); {нос}
line(x-3,y+10,x+3,y+10);{рот}
rectangle(x-17,y+15,x+17,y+50 ); {туловище}
rectangle(x-7,y+25,x+7,y+35 ); {Фотоаппарат}
setfillstyle(1,8);
floodfill(x,y+33,5);
setfillstyle(1,coler);
floodfill(x,y+37,5);
circle(x,y+30,2);
setcolor(5);
line(x-10,y+15,x-5,y+25);
line(x+10,y+15,x+5,y+25);
setfillstyle(1,14);
floodfill(x,y+20,5);
line(x-3,y+50,x-8,y+90); {ноги}
line(x-13,y+50,x-18,y+90);
line(x+3,y+50,x+9,y+90);
line(x+13,y+50,x+19,y+90);
line(x-25,y+85,x-6,y+85);
line(x+7,y+85,x+25,y+85);
setfillstyle(1,coler);
floodfill(x-10,y+80,5);
floodfill(x+15,y+80,5);
bar(x-25,y+85,x-6,y+90); { ботинки }
bar(x+7,y+85,x+25,y+90);
line(x-17,y+15,x-35,y+45); {руки}
line(x+17,y+15,x+35,y+45);
line(x-17,y+25,x-35,y+51);
line(x+17,y+25,x+35,y+51);
circle(x-35,y+50,5); {кисти рук}
circle(x+35,y+50,5);
floodfill(x-35,y+50,5);
floodfill(x+35,y+50,5);
floodfill(x+20,y+25,5);
floodfill(x-20,y+25,5);
setfillstyle(1,14);
rectangle(x+20,y+62,x+50,y+80);
floodfill(x+22,y+65,5);
setfillstyle(1,5);
floodfill(x+22,y+62,5);
setcolor(5);
bar(x-8,y-20,x+8,Y-2);
line(x-12,y-2,x+12,y-2);
arc(x+35,y+62,0,180,10);
str(k,s);
setcolor(5);
settextstyle(2,0,4);
outtextxy(x+22,y+70,s);
settextstyle(2,0,6);
setcolor(15);
str(rep,s) ;
settextstyle(2,0,2);
outtextxy(x-2,y-15,s); {надпись на шляпе}
setcolor(15);
settextstyle(2,0,5);
outtextxy(x-15,y+35,firma); {вывод названия фирмы}
end;
procedure fon; {рисунок основного фона}
var
ss:string; {Для преобразования числа в строку}
Begin
cleardevice;
settextstyle(3,0,2);
y:=150; {координата по вертикали для домика}
|
|
dom; {рисунок фотоателье}
setcolor(5);
settextstyle(1,0,3);
outtextxy(300,80, ' МОДЕЛИРОВАНИЕ');
outtextxy(300,110,'РАБОТЫ ФОТОАТЕЛЬЕ');
setcolor(1);
settextstyle(2,0,4);
outtextxy(0,getmaxy-130,'<F1> - Изменение сведений о фирмах и фотоматериалах');
outtextxy(0,getmaxy-117,'<F2> - Просмотр состояния фирм и фотоматериалов');
outtextxy(0,getmaxy-105,'<F3> - Удаление фирмы из списка');
outtextxy(0,getmaxy-93,'<F4> - Просмотр очереди');
outtextxy(0,getmaxy-81,'<F5> - Ввод данных из файла');
line(10,getmaxy-57,10,getmaxy-67);
line(10,getmaxy-67,7,getmaxy-61); {стрелка вверх}
line(10,getmaxy-67,13,getmaxy-61);
outtextxy(23,getmaxy-67,' - Постановка в очередь: ');
line(10,getmaxy-53,10,getmaxy-43);
line(10,getmaxy-43,7,getmaxy-49); {стрелка вниз}
line(10,getmaxy-43,13,getmaxy-49);
outtextxy(23,getmaxy-53,' - Обслуживание клиентов: ');
line(5,getmaxy-35,15,getmaxy-35); {стрелка налево}
line(5,getmaxy-35,10,getmaxy-39);
line(5,getmaxy-35,10,getmaxy-31);
outtextxy(18,getmaxy-40,' - Просмотр очереди в прямом направлении: ');
line(5,getmaxy-20,15,getmaxy-20); {стрелка направо}
line(15,getmaxy-20,10,getmaxy-24);
line(15,getmaxy-20,10,getmaxy-16);
outtextxy(0,getmaxy-25,' - Просмотр очереди в обратном направлении: ');
outtextxy(0,getmaxy-15,'<Esc> - Выход из программы: ');
X:=50;
y:=260;
setcolor(3);
setlinestyle(0,0,3);
rectangle(getmaxx-305,getmaxy-126,getmaxx-5,getmaxy-5);
setfillstyle(1,15);
floodfill(getmaxx-150,getmaxy-100,3);
setcolor(1);
outtextxy(getmaxx-290,getmaxy-120,'I.Обслужено: ');
outtextxy(getmaxx-290,getmaxy -100 ,'Репортеров:');
|
|
str(z.rep1,ss);
outtextxy(getmaxx-210,getmaxy -100 ,ss);
outtextxy(getmaxx-100,getmaxy -100 ,'Фото:');
str(z.ft,ss);
outtextxy(getmaxx-30,getmaxy -100 ,ss);
outtextxy(getmaxx-290,getmaxy -80 ,'II.В очереди:');
outtextxy(getmaxx-290,getmaxy -60,'Репортеров: ');
str(z.rep,ss);
outtextxy(getmaxx-210,getmaxy -60 ,ss);
outtextxy(getmaxx-100,getmaxy -60 ,'Фото: ');
str(z.ft1,ss);
outtextxy(getmaxx-30,getmaxy -60 ,ss);
outtextxy(getmaxx-290,getmaxy -40 ,'III.Запас фотоматериалов:');
outtextxy(getmaxx-290,getmaxy -20,'Бумага:');
if z.bum<0 then z.bum:=0;
str(z.bum,ss);
outtextxy(getmaxx-210,getmaxy -20 ,ss);
outtextxy(getmaxx-100,getmaxy -20,'Реактивы:');
if z.rk<0 then z.rk:=0;
str(z.rk,ss);
outtextxy(getmaxx-30,getmaxy -20 ,ss);
setbkcolor(15);
end;
begin
a:=detect; { автоопределение параметров монитора}
initgraph(a,b,''); { инициализация графического режима}
end.
ИСПЫТАНИЯ ПРОГРАММЫ
Программа испытывалась на достаточно большом числе тестовых примеров, результат выполнения некоторых из таких примеров приведен ниже.
Отобразим изменение состава очереди фоторепортеров, порядок обслуживания, изменение запасов фотобумаги и реактивов в виде следующих таблиц.
I.
Состав очереди репортеров
Название | Pp | Sony | Obk | Puma | Pp | Mts |
Фото | 25 | 15 | 36 | 10 | 78 | 20 |
Запасы бумаги и реактивов в фотоателье
Название фирмы | Запасы бумаги | Запасы реактивов |
Obk | 234 | 345 |
|
|
Состав очереди репортеров
Название | pp | Obk | Puma | pp | Mts |
Фото | 25 | 36 | 10 | 78 | 20 |
Состав очереди репортеров
Название | Pp | puma | Pp | Mts |
Фото | 25 | 10 | 78 | 20 |
Состав очереди репортеров
Название | Pp | Pp |
Фото | 25 | 78 |
Пополнение запасов фотоматериалов:
Название фирмы | Запасы бумаги | Запасы реактивов |
Obk | 153 | 264 |
II.
Состав очереди репортеров
Название | pp | Obk | pp | 7 |
Фото | 4 | 5 | 2 | 12 |
Запасы бумаги и реактивов в фотоателье
Название фирмы | Запасы бумаги | Запасы реактивов |
Obk | 36 | 36 |
7 | 15 | 15 |
Состав очереди репортеров
Название | pp | Pp | 7 |
Фото | 4 | 2 | 12 |
Состав очереди репортеров
Название | pp | pp |
Фото | 4 | 2 |
Запасы бумаги и реактивов в фотоателье
Название фирмы | Запасы бумаги | Запасы реактивов |
Obk | 0 | 0 |
7 | 3 | 3 |
Проведенные испытания программы показали ее работоспособность, что подтвеждается правильностью полученных результатов.
АНАЛИЗ РЕЗУЛЬТАТОВ И ВЫВОДЫ
Разработанная программка соответствует предъявляемым к ней требованиям.
|
|
Выбранные структуры данных (одно- и двунаправленные списки) являются достаточно эффектиными для задач моделирования, Связанные списки имеют два преимущества перед массивами: они динамично могут изменять свои размеры, позволяют легко реорганизовать порядок элементов, добавлять и удалять элементы, путем редактирования небольшого числа ссылок. Использование двунаправленного списка позволяет перемещаться в двух направлениях, что ускоряет просмотр списка и поиск звена с заданными характеристиками.
СПИСОК ЛИТЕРАТУРЫ
1. Кнут, Д. Искусство программирования. Т. 1. Основные алгоритмы. - М.: Вильямс, 2000.
2. Вирт Н. Алгоритмы и структуры данных. – СПб.: Невский Диалект, 2008.
Дата добавления: 2018-06-27; просмотров: 327; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!