Комбинированный и множественный типы данных.

Цель работы

1. Использование записей при решении задач.

2. Использование множеств и операций над множествами.

Пример первого задания.

Для заданного количества (MaxN) ЭВМ определяется отношение стоимости к производительности. Производительность задается в миллионах операций в секунду отдельно для скалярных и векторных операций; стоимость - в долларах. Программа выбирает ЭВМ с минимальным отношением стоимости к производительности отдельно для скалярных и векторных операций и печатает характеристики.

Const

MaxN=5;

Type

Computer=record

Firma, namecomp:string[20];

Year:2000..2010;

Proizv:record

Scal, vect:Integer

End;

Price: Integer;

PriceToProizv:array[1..2] of real;

End;

Var

a: array[1..MaxN] of Computer;

I,j1,j2:Integer;

R1,r2:real;

Procedure In_Data; { Процедура ввода данных }

Begin

Writeln(‘введите данные ЭВМ’);

With A[I],proizv do

Begin

Write(‘введите название фирмы’);

Readln(firma);

Write(‘введите название comp’);

Readln(namecomp);

Writeln(‘введите характеристики’);

Readln(Year, Proizv, Scal, vect, Price);

PriceToProizv[1]:= price/scal;

PriceToProizv[2]:= price/vect;

End;

End;

BEGIN { основная программа}

Writeln;

For i:=1 to MaxN do

In_Data;

{ поиск ЭВМ с минимальным отношением стоимости к производительности отдельно для скалярных и векторных операций}

R1:=A[1].PriceToProizv[1]; j1:=1;{ для скалярных операций }

R2:=A[1].PriceToProizv[2]; j2:=2; { для векторных операций }

For i:=2 to MaxN do

With A[I] do

Begin

If PriceToProizv[1]<r1 then

Begin

R1:=PriceToProizv[1]; j1:=i;

End;

If PriceToProizv[2]<r2 then

Begin

R2:=PriceToProizv[2]; j2:=i;

End;

End;

{ Печать характеристик }

With A[j1],proizv do{ ЭВМ с min отношением ст/пр для скалярных операций}

Writeln(firma, namecomp,Year:5, Scal:8, vect:8, Price:8, PriceToProizv[1]:7:2, PriceToProizv[2]:7:2);

With A[j2],proizv do{ ЭВМ с min отношением ст/пр для векторных операций}

Writeln(firma, namecomp,Year:5, Scal:8, vect:8, Price:8, PriceToProizv[1]:7:2, PriceToProizv[2]:7:2);

END.

Пример второго задания.

Известен набор продуктов: хлеб, масло, сыр, молоко, имеющихся в ассортименте магазинов. В 3 магазина поставлены отдельные виды этих продуктов. Требуется построить множества А, В, С, которые содержат соответственно:

· продукты, имеющиеся одновременно во всех магазинах;

· продукты, имеющиеся, по крайней мере, в одном из магазинов;

· продукты, которых нет ни в одном из магазинов.

 

Const

N=3;

Type

Product=(bread,butter,cheese,milk); {продукты }

Assort=set of product; {ассортимент продуктов }

Shop=array[1..n] of assort; {наличие продуктов в магазинах }

 

Var

M1:shop;

X: Product;

A,b,c,xm1: assort;

I,j,v,iw:integer;

BEGIN

For I:=1 to n do

Begin

Xm1:=[];

Writeln(‘введите номера продуктов ‘,I:2, ‘-го магазина=‘);

Repeat

Read(iw);

Case iw of

1:x:=bread;

2:x:=butter;

3:x:=cheese ;

4:x:= milk;

else

write(‘номера продуктов 1..4’);

end; {case}

xm1:=xm1+[x]; {наличие продуктов в одном магазине }

until eoln;

m1[1]:=xm1

end; {конец цикла по магазинам }

{получение множеств А,В,С }

A:=m1[1];

B:=[];

For I:=1 to 3 do

Begin

A:=A*m1[1]; ];{одновременно во всех }

B:=B+ m1[1{хотя бы в одном }

C:=[ bread.. milk]-B; {нет ни в одном }

End;

For I:=1 to 3 do

Begin

Case i of

1: Writeln(‘продукты, имеющиеся во всех магазинах ‘);

2: Writeln(‘ассортимент продуктов ‘);

3: Writeln(‘продукты, которых нет ни в одном магазине ‘);

end;

For x:=bread to milk do

If x in a then

Case x of

Bread: Write(‘хлеб ‘);

Butter: Write(‘масло ‘);

Cheese: Write(‘сыр ‘);

Milk: Write(‘молоко ‘);

end; {case}

if I:=1 then a:=b

else

a:=c;

writeln

end

END.

 

Рекомендуемая литература:

1. В.В. Попов Паскаль и Дельфи . Учебный курс. - СПб.: Питер, 2005.

2. Г.Г. Рапаков, С.Ю. Ржеуцкая Turbo Pascal для студентов и школьников СПб.: БХВ-Петербург, 2005.

3. А.Б.Ставровский Турбо Паскаль 7.0. Учебник.- К.: Торгово-издательское бюро BHV, 2000.

4. С.М. Окулов Основы программирования – М.: ЮНИМЕДИАСТАЙЛ, 2002

 

Основная литература:

1. Белов В.В. Программирование в DELPHI: процедурное, объектно-ориентированное, визуальное [Электронный ресурс]: учебное пособие / В.В. Белов, В.И. Чистякова. — Электрон. дан. — М.: Горячая линия-Телеком, 2014. — 240 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=64091

2. Иванова Г.С. Средства процедурного программирования Microsoft Visual C ++ 2008 [Электронный ресурс]: учебное пособие / Г.С. Иванова, Т.Н. Ничушкина, Р.С. Самарев. — Электрон. дан. — М.: МГТУ им. Н.Э. Баумана (Московский государственный технический университет имени Н.Э. Баумана), 2012. — 140 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=52414

3. Богонин М.Б. Языки и системы программирования. Процедурные языки программирования на примерах Pascal и Си: учебное пособие [Электронный ресурс]: учебное пособие. — Электрон. дан. — Пенза: ПензГТУ (Пензенский государственный технологический университет), 2012. — 212 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=62777.

4. Богонин М.Б. Языки и системы программирования. Процедурные языки программирования на примерах Pascal и Си: учебно-методическая разработка для лабораторного практикума [Электронный ресурс]: учебно-методическое пособие / М.Б. Богонин, О.Е. Чуфистов, Е.Я. Хижняк. — Электрон. дан. — Пенза: ПензГТУ (Пензенский государственный технологический университет), 2012. — 116 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=62440

5. Соколова, Ю.С. Разработка приложений в среде Delphi. В 2 частях. Часть 1. Общие приемы программирования. [Электронный ресурс] : учебное пособие / Ю.С. Соколова, С.Ю. Жулева. — Электрон. дан. — М. : Горячая линия-Телеком, 2013. — 142 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=5196

6. Медведик, В.И. Практика программирования на языке Паскаль (задачи и решения) [Электронный ресурс] : учебное пособие. — Электрон. дан. — М. : ДМК Пресс, 2013. — 590 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=58700

7. Дмитриев, Н.Н. Моделирование инженерных задач на языке программирования Free Pascal в среде Lazarus: учебное пособие для вузов [Электронный ресурс] : учебное пособие / Н.Н. Дмитриев, В.Ю. Сахаров. — Электрон. дан. — СПб. : БГТУ "Военмех" им. Д.Ф. Устинова (Балтийский государственный технический университет «Военмех» имени Д.Ф. Устинова), 2012. — 61 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=63711

Дополнительная литература:

1. Москвитина, О.А. Сборник примеров и задач по программированию [Электронный ресурс] : учебное пособие / О.А. Москвитина, В.С. Новичков, А.Н. Пылькин. — Электрон. дан. — М. : Горячая линия-Телеком, 2014. — 245 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=64090

2. Окулов, С.М. Задачи по программированию [Электронный ресурс] : / С.М. Окулов, Т.В. Ашихмина, Н.А. Бушмелева. — Электрон. дан. — М. : "Лаборатория знаний" (ранее "БИНОМ. Лаборатория знаний"), 2014. — 825 с. — Режим доступа:http://e.lanbook.com/books/element.php?pl1_id=66115

3. Окулов, С.М. Основы программирования [Электронный ресурс] : . — Электрон. дан. — М. : "Лаборатория знаний" (ранее "БИНОМ. Лаборатория знаний"), 2015. — 339 с. — Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=66119