Задача 12 Урок 15

Задача 12 Урок 15

Напишите программу, которая будет заполнять массив из 10 элементов случайными числами из диапазона от 0 до 20, при этом в полученном массиве не должно быть одинаковых значений.

program lesson15_12;
var
    a: array[1..10] of integer;
    i, j, temp: integer;
begin
    randomize();

    for i := low(a) to high(a) do
        a[i] := -1;

    i := 1;
    while i <= high(a) do
    begin
        temp := random(21);

        for j := low(a) to i do
			if a[j] = temp then
                break
            else if j = i then
            begin
                a[i] := temp;
                i := i + 1;
                break;
			end;
	end;

    for i := low(a) to high(a) do
        write(a[i], '|');

    readln();
end.
vedro-compota's picture

  for j := low(a) to i do
            if a[j] = temp then
                break
            else if j = i then
            begin
                a[i] := temp;
                i := i + 1;
                break;
            end;

-- можно написать оптимальнее, вынеся код ветки else за пределы вложенного цикла

_____________
матфак вгу и остальная классика =)

program lesson15_12;
var
    a: array[1..10] of integer;
    i, j, temp, count: integer;
begin
    randomize();

    for i := low(a) to high(a) do
        a[i] := -1;

    i := 1;
    while i <= high(a) do
    begin
        temp := random(21);

        count := 0;
        for j := low(a) to i do
			if a[j] <> temp then
                count := count + 1;

        if count = i then
        begin
            a[i] := temp;
            i := i + 1;
		end;
	end;

    for i := low(a) to high(a) do
        write(a[i], '|');

    readln();
end. 
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)