Урок 22 Задача 1
Primary tabs
У вас есть функция:
program my_program; type b = array[1..10] of integer; // объявление типа function filling_array( min, max : integer ) : b; var count, i, j, l, k, number : integer; arr : b; begin count := 0; k := 1; randomize; // вызов процедуры while( count < 10 ) do begin number := random( max - (min + 1) + min ) ; // случайные числa write( number, ' ' ); j := 0; for i := low( arr ) to k do begin if( arr[i] <> number ) then begin j += 1; if( j = k ) then begin count += 1; k += 1; arr[count] := number; end; end else break; end; end; filling_array := arr; // возвращаем значение функции end;Что делает эта функция? (добавьте текстовое описание)
В данной функции есть лишние переменные, перепишите код так, чтобы они не использовались.
type b = array[1..10] of integer; // объявление типа
var
arr: b;
i: integer;
{ Функция получает на вход два числа,
и возвращает массив с уникальными значениями.
Получаемые два числа на вход - это минимальное и
максимальное значение диапазона.
Из этого диапазона с помощью процедуры randomize
функция в цикле получает случайные значения.
Далее с помощью вложенного цикла осуществляется
проверка очередного случайного значения на равенство
значениям, уже вписанным в массив.
Если значение не равно ни одному из элементов массива,
происходит запись этого значения в очередной элемент массива.
Внешний цикл работает, пока не заполнится весь массив. }
function filling_array( min, max : integer ) : b;
var count, i, j, l, k, number : integer;
arr : b;
begin
count := 0;
k := 1;
randomize; // вызов процедуры
while( count < 10 ) do
begin
number := random( max - (min + 1) + min ) ; // случайные числa
write( number, ' ' );
j := 0;
for i := low( arr ) to k do
begin
if( arr[i] <> number ) then
begin
j += 1;
if( j = k ) then
begin
count += 1;
k += 1;
arr[count] := number;
end;
end
else
break;
end;
end;
filling_array := arr; // возвращаем значение функции
end;
begin
arr:= filling_array(0, 15);
writeln;
for i := low(arr) to high(arr) do
write(arr[i], ' ' );
readln();
end.Переписанный код:
type b = array[1..10] of integer; // объявление типа
var
i: integer;
arr : b;
function filling_array( min, max: integer ): b;
var
i, k, number: integer;
arr: b;
begin
k := 1;
randomize; // вызов процедуры
while not(k > high(arr)) do
begin
number := random( max - (min + 1) + min ) ; // случайные числa
write(number, ' ' );
for i := low(arr) to k do
if arr[i] = number then
break;
if (i = k) and not(arr[i] = number) then
begin
arr[i] := number;
k:= k+1;
end;
end;
filling_array := arr; // возвращаем значение функции
end;
begin
arr:= filling_array(0, 15);
writeln;
for i := low(arr) to high(arr) do
write(arr[i], ' ' );
readln();
end.- Log in to post comments
- 1067 reads
vedro-compota
Sun, 01/15/2023 - 13:13
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)