ЛАБОРАТОРНАЯРАБОТА
подисциплине “Основы программирования”
на тему
Алгоритмическиеязыки: использование множеств
Цель работы: получение навыков работыс множествами.Постановказадачи:
1. Изучитьспособы описания и использования множеств.
2. Разработать алгоритм и составить программу для решениязадачи соответствующего варианта.Заданиек работе:
1. Найти в последовательности целых чисел такие, которыевстречаются в ней ровно два раза.
2. Набрать программу, отладить ее, протестировать.Распечатать текст программы и результаты ее работы на тестовых данных.
3. Подобрать наборы тестовых данных.
Ходвыполнения работы
Блок-схема:/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
Рисунок 1.Блок-схема программы.
/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
–
/>
/>/>+/> /> /> /> /> /> /> /> /> /> /> /> /> />
Рисунок 2.Блок-схема элемента Code программы.
/>
–
/>/>+
–
/>
/> +/> /> /> /> /> /> /> /> /> /> />
c:=c+[a[y]] /> /> /> /> /> /> /> /> /> /> /> /> />
Рисунок 3.Блок-схема элемента Code2 программы.
Текстпрограммы:
Program lab;
Uses crt;
Type
bin=byte;
maxlen=byte;
Const
max=100;
max_bin=255;
Var
a:array[1..max]of bin;
len:maxlen;
ProcedureVvod(Var a: array of bin;Var len:maxlen);
Var
x:maxlen;
begin
Write(‘Введитедлинну последовательности: ‘);
Readln(len);
Writeln(‘Введитеэлементы последовательности: ‘);
for x:= 1 tolen do
Begin
Write(‘a[‘,x,’]=’);
Readln(a[x]);
End;
End;
ProcedureCode(a:array of bin;len:maxlen);
Var
x:maxlen;
b:array[1..max_bin]of byte;
Begin
for x:=1 tomax_bin do b[x]:=0;
for x:=1 tolen do inc(b[a[x]]);
for x:=1 tomax_bin do if b[x]=2 then
Begin
Writeln(‘Число’,x,’ повторяется ровно два раза’);
End;
End;
ProcedureCode2(a:array of bin;len:maxlen);
Var
b,c:set ofbin;
x,y:maxlen;
k:byte;
Begin
y:=1;
b:=[];
c:=[];
for x:=1 tolen do b:=b+[a[x]];
for y:=1 tolen do
Begin
x:=0;
k:=0;
Repeat
Begin
inc(x);
if (a[x] inb)and(a[x]=a[y]) then inc(k);
End;
Until (x=len)or (k>2);
if k=2 thenc:=c+[a[y]];
End;
for x:=1 tomax_bin do if x in c then
Begin
Writeln(‘Число’,x,’ повторяется ровно два раза’);
End;
End;
Clrscr;
Begin
Vvod(a,len);
Writeln(‘Первыйалгоритм: ‘);
Code(a,len);
Writeln(‘Второйалгоритм: ‘);
Code2(a,len);
End.
Результатыработы программы.
1) Введенныеданные:
a[1]=1;a[2]=2; a[3]=3; a[4]=8; a[5]=10; a[6]=25; a[7]=44; a[8]=2; a[9]=9; a[10]=33; Результаты работы программы
Первыйалгоритм:
Числаповторяющиеся ровно два раза: 2;
Второй алгоритм:
Числаповторяющиеся ровно два раза: 2;
/>
Рисунок 4.Результаты теста №1.
2) Введенныеданные:
a[1]=1;a[2]=1; a[3]=2; a[4]=2; a[5]=3; a[6]=3; a[7]=4; a[8]=4;
Результатыработы программы
Первыйалгоритм:
Числа,повторяющиеся ровно два раза: 1; 2; 3; 4;
Второйалгоритм:
Числа,повторяющиеся ровно два раза: 1; 2; 3; 4;
/>
Рисунок 5.Результаты теста №2.