Задача 10 Урок 15
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.Например для массива:
|1|5|4|5|6|7|8|
-- функция должна "сообщить", что он неуникальныйа для:
|1|15|4|5|6|7|8|
-- что уникальный.
var
a:array [1..7] of integer;
l:integer;
function uniq(b:array of integer):string;
var i,k,j,flag:integer;
s:string;
begin
s:='unikalen';
i:=1;
flag:=1;
repeat
k:=b[i];
for j:=1 to 7 do
if(b[j]=k) then
begin
s:='ne unikalen';
break;
end;
i:=i+1;
if ((s='ne unikalen')or(i=8)) then
flag:=0;
until (flag=0);
result:=s;
end;
begin
randomize();
for l:=1 to 7 do
begin
a[l]:=random(15);
write(a[l],' ');
end;
writeln();
writeln('massiv ', uniq(a));
end. Консоль:
11 0 1 9 7 10 14 massiv ne unikalen
- Log in to post comments
- 899 reads
vedro-compota
Wed, 02/16/2022 - 19:34
Permalink
1)
1)
-- лучше использовать boolean для результата
2) лучше переписать перебор на два цикла for с дополнительным break в родительском цикле, в в случае если уже выявлен неуникальный элемент.
_____________
матфак вгу и остальная классика =)
Lena
Thu, 02/17/2022 - 16:07
Permalink
ar
var a:array [1..7] of integer; l:integer; function uniq(b:array of integer):boolean; var i,k,j,flag:integer; s:boolean; begin s:=true; flag:=1; for i:=1 to 7 do for j:=1 to 7 do if((b[j]=b[i])and(i<>j)) then begin s:=false; break; end; result:=s; end; begin randomize(); for l:=1 to 7 do begin a[l]:=random(15); write(a[l],' '); end; writeln(); if (uniq(a)) then writeln('massiv unicalen') else writeln('massiv ne unicalen'); end.