Урок 15 задача 13

Урок 15 задача 13

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

type
  newArr = array[1..10] of integer;

var i, j: integer;
    rndmArr: newArr;

begin
  randomize();
  for i := 1 to 10 do
  begin
    rndmArr[i] := random(21);
    j := 0;
    while (j < i) do
      begin
        if (rndmArr[i] = rndmArr[j]) then
          begin
            rndmArr[i] := random(21);
            j := 0;
          end
        else
        j:=j+1;
      end;
    write(rndmArr[i],' ');
  end;
  writeln();
  readln();
end.       
vedro-compota's picture


    rndmArr[i] := random(21);
    j := 0;
    while (j < i) do
      begin
        if (rndmArr[i] = rndmArr[j]) then
          begin
            rndmArr[i] := random(21);
            j := 0;
          end

-- убрать дублирование кода, можно (и нужно) использовать break

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

var i, j: integer;
rndmArr: array[1..10] of integer;

begin
  randomize();
  i:=1;
  while i <= 10 do
  begin
    rndmArr[i] := random(21);
    //writeln('Попытка ',i,' массив: ',rndmArr[i]);
    j := 1;
    while (j <> i) do
    begin
      if (rndmArr[i] = rndmArr[j]) then
      begin
        i:=i-1;
        break;
      end
      else
        j:=j+1;
    end;
    i:=i+1;
  end;
  writeln();
  for i:=1 to 10 do
    write(rndmArr[i],' ');
  readln();
end.  
vedro-compota's picture

засчитано

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