Урок 15. Задача №8. Решение.
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
type
MyArr = array[1..7] of integer;
function FillArray(other_arr: MyArr): MyArr;
var i, min, max: integer;
begin
randomize();
min := 1;
max := 15;
for i := 1 to length(other_arr) do
other_arr[i] := min + random(max);
result := other_arr;
end;
function UniqNumb(s: string; copy_arr: MyArr): string;
var i, j: integer;
begin
for i := 1 to length(copy_arr) do
begin
for j := 1 to length(copy_arr) do
begin
if(i = j) then
continue;
if(copy_arr[i] = copy_arr[j]) then
begin
s := 'In your array not unique numbers.';
break;
end else
s := 'All your numbers in array unique';
end;
end;
result := s;
end;
procedure ShowArray(arr_first: MyArr);
var i: integer;
begin
writeln('arr = ');
for i := 1 to length(arr_first) do
write('|', arr_first[i], '|', ' ');
writeln();
end;
var a: integer;
arr: MyArr;
message: string;
begin
arr := FillArray(arr);
ShowArray(arr);
writeln();
message := UniqNumb(message, arr);
writeln(message);
readln(); // Удержание консоль
end.// Завершение программы - Log in to post comments
- 5595 reads
vedro-compota
Wed, 06/03/2020 - 20:37
Permalink
UniqNumb() должна возвращать
UniqNumb() должна возвращать boolean
_____________
матфак вгу и остальная классика =)
Firons
Sat, 06/06/2020 - 17:58
Permalink
Исправлено.
type IntArr = array[1..7] of integer; function FillArray(other_arr: IntArr): IntArr; var i, min, max: integer; begin randomize(); min := 1; max := 15; for i := 1 to length(other_arr) do other_arr[i] := min + random(max); result := other_arr; end; function UniqNumb(copy_arr: IntArr): boolean; var i, j, k: integer; uniqArr: boolean; begin uniqArr := true; k := 2; for i := 1 to length(copy_arr) do begin for j := k to length(copy_arr) do begin if(copy_arr[i] = copy_arr[j]) then begin uniqArr := false; break; end; end; if(uniqArr = false) then break; k += 1; end; result := uniqArr; end; procedure ShowArray(arr_first: IntArr); var i: integer; begin writeln('arr = '); for i := 1 to length(arr_first) do write('|', arr_first[i], '|', ' '); writeln(); end; var arr: IntArr; begin arr := FillArray(arr); ShowArray(arr); writeln(); if(UniqNumb(arr) = true) then writeln('All your numbers in array unique') else writeln('In your array not unique numbers.'); readln(); // Удержание консоль end.// Завершение программыvedro-compota
Sat, 06/06/2020 - 19:59
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)
vedro-compota
Sat, 06/06/2020 - 20:04
Permalink
if(UniqNumb(arr) = true)
-- сравнение с true ненужно
_____________
матфак вгу и остальная классика =)
Firons
Sun, 06/07/2020 - 12:13
Permalink
Исправлено.
type IntArr = array[1..7] of integer; function FillArray(other_arr: IntArr): IntArr; var i, min, max: integer; begin randomize(); min := 1; max := 15; for i := 1 to length(other_arr) do other_arr[i] := min + random(max); result := other_arr; end; function UniqNumb(copy_arr: IntArr): boolean; var i, j, k, len_arr: integer; uniqArr: boolean; begin len_arr := length(copy_arr); uniqArr := true; k := 2; for i := 1 to len_arr do begin for j := k to len_arr do begin if(copy_arr[i] = copy_arr[j]) then begin uniqArr := false; break; end; end; if(uniqArr = false) then break; k += 1; end; result := uniqArr; end; procedure ShowArray(arr_first: IntArr); var i: integer; begin writeln('arr = '); for i := 1 to length(arr_first) do write('|', arr_first[i], '|', ' '); writeln(); end; var arr: IntArr; begin arr := FillArray(arr); ShowArray(arr); writeln(); if(UniqNumb(arr)) then writeln('All your numbers in array unique') else writeln('In your array not unique numbers.'); readln(); // Удержание консоль end.// Завершение программы