Решение №8 из главы 15.Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными от
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для массива:|1|5|4|5|6|7|8|-- функция должна "сообщить", что он неуникальный
а для:|1|15|4|5|6|7|8|
program pascal_unique_array3_15_7;
type b = array[1..10] of integer; // секция обьявления типов
function filling_array( in_arr : b ) : b; // заполнение массива
var j, min, max : integer;
begin
randomize;
min := 5;
max := 50;
for j := low( in_arr ) to high( in_arr ) do
begin
in_arr[j] := min + random( max - 1 );
write( in_arr[j], ' ' );
end;
filling_array := in_arr; // возвращаем значение функции
end;
{ функция определения является ли массив уникальным. возвращает
boolean значение }
function array_value( new_arr : b ) : boolean;
var count, j, i, n : integer;
uniq_or_not_uniq : boolean;
begin
count := 0;
i := 0;
j := 0;
while( j <= length( new_arr ) - 1 ) and ( count <> 2 ) do // выполняем пока оба условия верны
begin
n := new_arr[j]; // присваиваем n значение первого элемента массива
count := 0; // счетчик вхождений элемента n в массив
for i := 1 to length( new_arr ) do // обходим массив
begin
if( n = new_arr[i] ) then // если верно
begin
count += 1; // увеличиваем счетчик
if( count = 2 ) then // если верно то массив не уникален
begin
uniq_or_not_uniq := false;
writeln();
//writeln('not a unique array');
break; // выходим из цикла
end;
end;
end;
j += 1; // увеличиваем значение
end;
if( count <> 2 ) then // если не равно 2 то уникален
begin
uniq_or_not_uniq := true;
writeln();
end;
array_value := uniq_or_not_uniq; // возвращаем значение функции
end;
{ процедура вывода значения }
procedure conclusion_value( arr_value : boolean );
begin
if ( arr_value ) then
writeln( 'array is unique' )
else
writeln( 'array is not unique' );
end;
var int_array : b;
value_arr : boolean;
begin // основная программа
int_array := filling_array( int_array ); // вызов функции
value_arr := array_value( int_array ); // вызов функции
conclusion_value( value_arr ); // вызов процедуры
readln;
end. // завершение основной программы
- Log in to post comments
- 2548 reads
vedro-compota
Wed, 07/08/2020 - 19:52
Permalink
Можно избежать сравнения
_____________
матфак вгу и остальная классика =)