Задача 10 Урок 15
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для массива:|1|5|4|5|6|7|8|-- функция должна "сообщить", что он неуникальный
а для:
|1|15|4|5|6|7|8|-- что уникальный.
type inArr = array[1..7] of Integer;
var a: array [1..7] of integer;
L, i, min, max: integer;
res: boolean;
function SS(x: inArr; L: integer): boolean;
var flag1, flag2: boolean;
k: integer;
begin
flag1 := false;
flag2 := false;
for k := 1 to L do // цикл прохода в зависимости от длины массива (L)
begin
for i := low(x) to high(x) do
begin
if((x[k] = x[i]) and (i<>k)) then
flag1 := true
else
flag2 := false;
end;
end;
if(flag1) then
result := true
else
result := false;
end;
begin
min := 1;
max := 15;
randomize();
for i := 1 to 7 do
a[i] := random(max - min + 1) + min;
for i := low(a) to high(a) do //цикл вывода на экран начального массива
begin
write(a[i], ' ');
L := i; // узнаем длину массива для отправки в функцию.
end;
writeln();
res := SS(a,L);
if(res) then
writeln('ne ynikalnii')
else
writeln('ynikalniy');
readln();
end.
- Log in to post comments
- 5332 reads
vedro-compota
Sun, 09/05/2021 - 13:27
Permalink
for k := 1 to L do // цикл
Не нужен ли тут break?
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Mon, 09/06/2021 - 18:33
Permalink
RE
type inArr = array[1..7] of Integer; var a: array [1..7] of integer; L, i, min, max: integer; res: boolean; function SS(x: inArr; L: integer): boolean; var flag1, flag2: boolean; k: integer; begin flag1 := false; flag2 := false; for k := 1 to L do // цикл прохода в зависимости от длины массива (L) begin for i := low(x) to high(x) do begin if((x[k] = x[i]) and (i<>k)) then flag1 := true else begin flag2 := false; break; end; end; end; if(flag1) then result := true else result := false; end; begin min := 1; max := 15; randomize(); for i := 1 to 7 do a[i] := random(max - min + 1) + min; for i := low(a) to high(a) do //цикл вывода на экран начального массива begin write(a[i], ' '); L := i; // узнаем длину массива для отправки в функцию. end; writeln(); res := SS(a,L); if(res) then writeln('ne ynikalnii') else writeln('ynikalniy'); readln(); end.vedro-compota
Wed, 09/08/2021 - 20:09
Permalink
if(flag1) then
--можно записать короче
-- что-то странное
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Thu, 09/09/2021 - 13:44
Permalink
RE
type inArr = array[1..7] of Integer; var a: array [1..7] of integer; L, i, min, max: integer; res: boolean; function SS(x: inArr; L: integer): boolean; var flag1, flag2: boolean; k: integer; begin flag1 := true; for k := 1 to L do // цикл прохода в зависимости от длины массива (L) begin for i := low(x) to high(x) do begin if((x[k] = x[i]) and (i<>k)) then begin flag1 := false ; break; end; end; end; if(not flag1) then result := false; end; begin min := 1; max := 15; randomize(); for i := 1 to 7 do a[i] := random(max - min + 1) + min; for i := low(a) to high(a) do //цикл вывода на экран начального массива begin write(a[i], ' '); L := i; // узнаем длину массива для отправки в функцию. end; writeln(); res := SS(a,L); if(res) then writeln('ynikalnii') else writeln('ne ynikalniy'); readln(); end.vedro-compota
Sat, 09/11/2021 - 11:56
Permalink
if(not flag1) then
-- результат можно вернуть короче, проанализируйте зависимость
[статический анализ]
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Mon, 09/13/2021 - 22:31
Permalink
RE
type inArr = array[1..7] of Integer; var a: array [1..7] of integer; L, i, min, max: integer; res: boolean; function SS(x: inArr; L: integer): boolean; k: integer; begin flag1 := true; for k := 1 to L do // цикл прохода в зависимости от длины массива (L) for i := low(x) to high(x) do if((x[k] = x[i]) and (i<>k)) then result := false; ; end; begin min := 1; max := 15; randomize(); for i := 1 to 7 do a[i] := random(max - min + 1) + min; for i := low(a) to high(a) do //цикл вывода на экран начального массива begin write(a[i], ' '); L := i; // узнаем длину массива для отправки в функцию. end; writeln(); res := SS(a,L); if(res) then writeln('ynikalnii') else writeln('ne ynikalniy'); readln(); end.vedro-compota
Tue, 09/14/2021 - 21:04
Permalink
function SS(x: inArr; L:
_____________
матфак вгу и остальная классика =)
jl8qy9kd_pro
Fri, 09/17/2021 - 15:23
Permalink
RE
type inArr = array[1..7] of Integer; var a: array [1..7] of integer; L, i, min, max: integer; function SS(x: inArr; L: integer): boolean; var k: integer; begin for k := 1 to L do // цикл прохода в зависимости от длины массива (L) begin for i := low(x) to high(x) do if((x[k] = x[i]) and (i <> k)) then begin result:= false; break; end; if(not result) then break else result := true; end; end; begin min := 1; max := 15; randomize(); for i := 1 to 7 do a[i] := random(max - min + 1) + min; for i := low(a) to high(a) do //цикл вывода на экран начального массива begin write(a[i], ' '); L := i; // узнаем длину массива для отправки в функцию. end; writeln(); if(SS(a,L)) then writeln('ynikalnii') else writeln('ne ynikalniy'); readln(); end.vedro-compota
Sun, 10/03/2021 - 12:33
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)