Задача 12 Урок 15
Primary tabs
Задача 12 Урок 15Напишите программу, которая будет заполнять массив из 10 элементов случайными числами из диапазона от 0 до 20, при этом в полученном массиве не должно быть одинаковых значений.
const
N = 10;
type
arr = array [1..N] of integer;
var
a: arr;
min, max, i, j, el: integer;
flag: boolean;
begin
flag:= true;
randomize();
min:= 0;
max:= 20;
el:= 1;
i:= 1;
while (i <= N) do
begin
el:= min + random(max - min + 1);
for j:= low(a) to high(a) do
begin
if a[j] = el then
begin
flag:= false;
break;
end
else flag:= true;
end;
if flag then
a[i]:= el
else continue;
write(a[i], ' ');
a[j]:= a[i];
inc(i);
end;
readln();
end.
- Log in to post comments
- 1990 reads
vedro-compota
Sun, 09/05/2021 - 12:44
Permalink
for j:= low(a) to high(a) do
Тут правая граница перебора должна быть динамической и зависеть от уже добавленных в массив элементов
_____________
матфак вгу и остальная классика =)
alterMann
Tue, 09/07/2021 - 21:20
Permalink
Сделал правую границу
Сделал правую границу динамической и вывел проверку в функцию
const N = 10; type arr = array [1..N] of integer; var a: arr; min, max, i, el, m: integer; function equal(var mas: arr; x, y: integer):boolean; var j: integer; flag: boolean; begin for j:= low(mas) to x do begin if mas[j] = y then begin flag:= false; break; end else flag:= true; end; result:= flag; end; begin randomize(); min:= 0; max:= 20; i:= 1; m:= 0;//правая граница цикла в функции while (i <= N) do begin el:= min + random(max - min + 1); if equal(a, m, el) then a[i]:= el else continue; write(a[i], ' '); inc(i); if (m < N) then inc(m); end; readln(); end.vedro-compota
Wed, 09/08/2021 - 19:54
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)