Комбинированный и множественный типы данных.
Цель работы
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