Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_5_prog.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
65 Кб
Скачать
☆

Часть II

Задание 3

Задание

Дан целочисленный массив A[1:n].Написать программу, включающую две процедуры с параметрами. В первой процедуре необходимо подсчитать количество повторений каждого элемента массива A. Вторая процедура решает следующую задачу: Сформировать новый массив, содержащий все различные элементы массива A по одному разу.

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

Дано: n, A[1:n].

Результат: b

При: n – натуральное, n<=nmax.

Связь:

1)nb:=0

д ля i=1,n,

j :=1 пока a[i]≠b[j] и j<=nb; nb:=nb+1,b[nb]:=a[i],kol[nb]:=1,если j>nb, иначе

j:=j+1;

2)ptr=2

b[1]:=a[1]

b[ptr]:=a[i] и ptr:=ptr+1 если для ∃b[ptr] нету равного ему ∀a[i]

Внешняя спецификация

Введите число элементов массива A

Введите целое положительное число

Введите массив A из <n> элементов

Введите <i> целое число

Исходный массив

<A1><A2>..<An>

Новый массив, содержащий элементы исходного по-одному разу

<B1><B2>..<Bptr-1>

Алгоритм

Внутренние переменные

a,b[1..20]-цел

n,i,ptr-цел

z-вещ

Процедура p1

Внутрнние переменные

i,j,nb-цел

Начало проц

nb:=0;

Цикл для i:=1 до n

Начало

j:=1;

Цикл пока (a[i]<>b[j]) и (j<=nb)

j:=j+1;

кцикл

if j>nb то

nb:=nb+1;

b[nb]:=a[i];

kol[nb]:=1

Иначе kol[j]:=kol[j]+1;

кесли

Цикл для i:=1 до nb

Вывод('Количество элементов массива, равных ', b[i],' = ',kol[i]);

кцикл

Конец проц;

Процедура p2

Внутренние переменные

i2,j2-цел

Начало проц

b[1]:=a[1];

ptr:=2;

Цикл для i2:=2 до n

flag:=false;

Цикл для j2:=1 до ptr-1

если a[i2]=b[j2] то

flag:=true;

если flag=false то

b[ptr]:=a[i2];

ptr:=ptr+1;

кесли

кцикл

кцикл

Вывод('Новый массив, содержащий элементы исходного по-одному разу');

Цикл для i2:=1 до ptr-1

Вывод(' ',b[i2]);

кцикл

Конец проц

Начало

Вывод('Введите число элементов массива A');

цикл Вывод('Введите целое положительное число');

ввод(z);

пока (z>0) и (z=Округлить(z));

n:= Округлить(z);

кцикл

Вывод('Введите массив A из ', n,' элементов');

Цикл для i:=1 до n

цикл Вывод('Введите ',i,' целое число');

ввод(z);

пока z=Округлить(z);

a[i]:=Округлить(z);

кцикл

кцикл

Вывод('Исходный массив');

Цикл для i:=1 до n

Вывод(a[i],' ');

кцикл

p1(a,n);

p2(a,n);

Конец

Текст программы

program Lab5;

type mass=array[1..20] of integer;

var

a,b:mass;

n,i,ptr:integer;

z:real;

flag:boolean;

//1

procedure p1(a:mass; n:integer);

var i,j,nb:integer;

b,kol:mass;

begin

nb:=0;

for i:=1 to n do

begin

j:=1;

while (a[i]<>b[j]) and (j<=nb) do

begin

j:=j+1;

end;

if j>nb then

begin

nb:=nb+1;

b[nb]:=a[i];

kol[nb]:=1

end

else kol[j]:=kol[j]+1;

end;

for i:=1 to nb do

writeln('Количество элементов массива, равных ', b[i],' = ',kol[i]);

end;

{Procedure p1(a:mass; n:integer);

var i1,j1:integer;

begin

For i1:=1 to n do

Begin

kol:=0;

For j1:=1 to n do

If (i1<>j1)and (A[i1]=A[j1]) then

kol:=kol+1;

Writeln (' Элемент A [',i1,'] = ',A[i1],'. Повторяется - ',kol,' раз ');

End;

End;}

// 22

Procedure p2(a:mass;n:integer);

var i2,j2:integer;

begin

b[1]:=a[1];

ptr:=2;

For i2:=2 to n do

begin

flag:=false;

for j2:=1 to ptr-1 do

if a[i2]=b[j2] then

flag:=true;

if flag=false then

begin

b[ptr]:=a[i2];

ptr:=ptr+1;

end;

end;

Writeln('Новый массив, содержащий элементы исходного по-одному разу');

For i2:=1 to ptr-1 do

Write(' ',b[i2]);

end;

//3

begin

writeln('Введите число элементов массива A');

repeat writeln('Введите целое положительное число');

readln(z);

until (z>0) and (z=round(z));

n:=round(z);

writeln('Введите массив A из ', n,' элементов');

for i:=1 to n do

begin

repeat writeln('Введите ',i,' целое число');

readln(z);

until z=round(z);

a[i]:=round(z);

end;

Writeln('Исходный массив');

For i:=1 to n do

write(a[i],' ');

writeln;

p1(a,n);

p2(a,n);

end.

Тесты к программе и результаты

Введённые данные

Результат

Исходный массив

23 62 -62 6 62

Количество элементов массива, равных 23 = 1

Количество элементов массива, равных 62 = 2

Количество элементов массива, равных -62 = 1

Количество элементов массива, равных 6 = 1

Новый массив, содержащий элементы исходного по-одному разу

23 62 -62 6

Исходный массив

4 4 4 4

Количество элементов массива, равных 4 = 4

Новый массив, содержащий элементы исходного по-одному разу

4

Исходный массив

1 -5 -6 23 7 17

Количество элементов массива, равных 1 = 1

Количество элементов массива, равных -5 = 1

Количество элементов массива, равных -6 = 1

Количество элементов массива, равных 23 = 1

Количество элементов массива, равных 7 = 1

Количество элементов массива, равных 17 = 1

Новый массив, содержащий элементы исходного по-одному разу

1 -5 -6 23 7 17

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]