задача 12 урок 15

задача 12 урок 15

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

РЕШЕНИЕ:

program task_12_lesson_15;
type arr = array[1..10] of integer;
function compare(ar : arr; n, count: integer) : boolean; // функция приниает каждый след. элемент и сравнивает его с пред.
var i: integer;
  z: boolean;
begin
  z := true;   // по умолчанию предполагать уникальность эл-та
  for i := low(ar) to count do
  begin
    if (ar[i] = n) then
    begin
      z := false;      //как только z = false надо прервать цикл, и не заходить на сл. виток
      break;
    end
    else
      z := true;
  end;
  result := z;
end;

var a: array[1..10] of integer;
  i, n: integer;
begin
  i := 1;
  randomize();
  while i <= 10 do    // использую WHILE т.к. не известно сколько попыток понадобится
    begin
      n := random(20);
      if compare(a, n, i) then  //принимает массив, новый элемент, кол-во уже внесенных эл-тов
      begin
        a[i] := n;
        i += 1;
      end;
    end;
    for i:= low(a) to high(a) do
      write(a[i], ' ');
  readln
end.

КОНСОЛЬ

19 6 16 17 14 18 4 1 7 9
vedro-compota's picture

засчитано

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