Х,у-координаты на экране, 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!