ЛАБОРАТОРНАЯ РАБОТА
по дисциплине “Основы программирования”
на тему
Алгоритмические языки: использование множеств
Цель работы: получение навыков работы с множествами.
2. Разработать алгоритм и составить программу для решения задачи соответствующего варианта.
1. Найти в последовательности целых чисел такие, которые встречаются в ней ровно два раза.
2. Набрать программу, отладить ее, протестировать. Распечатать текст программы и результаты ее работы на тестовых данных.
3. Подобрать наборы тестовых данных.
Ход выполнения работы
Блок-схема:
Рисунок 1. Блок-схема программы.
-
+
Рисунок 2. Блок-схема элемента Code программы.
Рисунок 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;
Procedure Vvod(Var a: array of bin;Var len:maxlen);
x:maxlen;
begin
Write('Введите длинну последовательности: ');
Readln(len);
Writeln('Введите элементы последовательности: ');
for x:= 1 to len do
Begin
Write('a[',x,']=');
Readln(a[x]);
End;
Procedure Code(a:array of bin;len:maxlen);
b:array[1..max_bin] of byte;
for x:=1 to max_bin do b[x]:=0;
for x:=1 to len do inc(b[a[x]]);
for x:=1 to max_bin do if b[x]=2 then
Writeln('Число ',x,' повторяется ровно два раза');
Procedure Code2(a:array of bin;len:maxlen);
b,c:set of bin;
x,y:maxlen;
k:byte;
y:=1;
b:=[];
c:=[];
for x:=1 to len do b:=b+[a[x]];
for y:=1 to len do
x:=0;
k:=0;
Repeat
inc(x);
if (a[x] in b)and(a[x]=a[y]) then inc(k);
Until (x=len) or (k>2);
if k=2 then c:=c+[a[y]];
for x:=1 to max_bin do if x in c then
Clrscr;
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;