Задание 12 Урок 15
Primary tabs
Задание 12 Урок 15
Напишите программу, которая будет заполнять массив из 10 элементов случайными числами из диапазона от 0 до 20, при этом в полученном массиве не должно быть одинаковых значений.
type arr = array[1..10] of integer;
var i,min,max,value_check : integer;
first_array : arr;
function check(f_array : arr; value_counter, value_ch: integer): integer;
var x : integer;
begin
for x := low(f_array) to value_counter-1 do
if f_array[x] = value_ch then
begin
result := value_counter;
exit;
end
else
if x = (value_counter-1) then
result := value_counter+1;
end;
begin
min := 0;
max := 20;
value_check := 0;
i := 1;
randomize;
repeat
first_array[i] := min + random(max - min + 1);
value_check := first_array[i];
if i > 1 then
i := check(first_array,i,value_check);
if i = 1 then
i += 1;
until i > high(first_array);
for i := low(first_array) to high(first_array) do
write('|', first_array[i], '|');
readln();
end.- Log in to post comments
- 2576 reads
vedro-compota
Sun, 01/03/2021 - 15:28
Permalink
замечание
в каждом витке (это должно быть вне цикла)
_____________
матфак вгу и остальная классика =)
Dobrii_kot
Sat, 01/09/2021 - 16:51
Permalink
Исправлено
type arr = array[1..10] of integer; var first_array : arr; min,max : integer; function init_array(f_array: arr; mn,mx: integer): arr; var i: integer; begin randomize; for i := low(f_array) to high(f_array) do f_array[i] := mn + random(mx - mn + 1); result := f_array; end; procedure print(f_array: arr); var z : integer; begin for z := low(f_array) to high(f_array) do write('|', f_array[z], '|'); end; function uniqueness(f_array: arr; mi,ma : integer): arr; var g,k: integer; begin k := low(f_array); for g := low(f_array) to high(f_array) do begin repeat if g = k then// исключает сравнение значения с самим собой k += 1; if f_array[g] = f_array[k] then begin f_array[g] := mi + random(ma - mi + 1); k := low(f_array); end else begin k += 1; end; until k > high(f_array); k := low(f_array); end; result := f_array; end; begin min := 0; max := 20; first_array := init_array(first_array,min,max); print(first_array); writeln(' // исходный массив'); first_array := uniqueness(first_array,min,max); print(first_array); writeln(' // конечный массив'); readln(); end.консоль
vedro-compota
Sun, 01/17/2021 - 14:46
Permalink
проверить решение, на типе
проверить решение, на типе данных, где в массиве только 1 элемент.
_____________
матфак вгу и остальная классика =)