Алгоритмические языки: использование множеств

ЛАБОРАТОРНАЯ РАБОТА

По дисциплине “Основы программирования”

На тему

Алгоритмические языки: использование множеств

Цель работы: получение навыков работы с множествами.

Постановка задачи:

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;

Procedure Vvod(Var a: array of bin;Var len:maxlen);

Var

X:maxlen;

Begin

Write(‘Введите длинну последовательности: ‘);

Readln(len);

Writeln(‘Введите элементы последовательности: ‘);

For x:= 1 to len do

Begin

Write(‘a[‘,x,’]=’);

Readln(a[x]);

End;

End;

Procedure Code(a:array of bin;len:maxlen);

Var

X:maxlen;

B:array[1..max_bin] of byte;

Begin

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

Begin

Writeln(‘Число ‘,x,’ повторяется ровно два раза’);

End;

End;

Procedure Code2(a:array of bin;len:maxlen);

Var

B, c:set of bin;

X, y:maxlen;

K:byte;

Begin

Y:=1;

B:=[];

C:=[];

For x:=1 to len do b:=b+[a[x]];

For y:=1 to len do

Begin

X:=0;

K:=0;

Repeat

Begin

Inc(x);

If (a[x] in b)and(a[x]=a[y]) then inc(k);

End;

Until (x=len) or (k>2);

If k=2 then c:=c+[a[y]];

End;

For x:=1 to max_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.


Алгоритмические языки: использование множеств