Страница 1 из 1

Процедура заполняет матрицы одинаковыми значениями (решено)

СообщениеДобавлено: 08.06.2016 22:59:16
tech
Код: Выделить всё
const N = 2; M = 5;
type arr = array[1..N,1..M] of integer;
var
    one,two: arr;
   i,j: byte;

procedure matrix(var a: arr);
    begin
      randomize;
        for i:=1 to N do
         for j:=1 to M do begin
            a[i,j] := random(100);
         end;
    end;
   
procedure printer(var a: arr);
    begin
        for i:=1 to N do begin
         for j:=1 to M do
            write(a[i,j]:4);
         writeln;
      end;
    end;

begin
   matrix(one);
   printer(one);
   writeln;
   matrix(two);
   printer(two);
end.


Почему оба массива заполняются одинаковыми значениями?
Код: Выделить всё
  61  48  79  82  78
  53  10  13  35  14

  61  48  79  82  78
  53  10  13  35  14


Однако если сделать так:
Код: Выделить всё

...
procedure matrix(var a: arr; b: integer);
    begin
      randomize;
        for i:=1 to N do
         for j:=1 to M do begin
            a[i,j] := random(b);
         end;
    end;

...
...
   matrix(one,100);
   matrix(two,200);
....


то массивы заполняются по-разному. Если передавать одинаковый второй параметр, то заполняются одинаково.

Re: Процедура заполняет матрицы одинаковыми значениями

СообщениеДобавлено: 08.06.2016 23:23:12
Дож
Потому что randomize сбрасывает рандом и он начинает генерить те же значения заново. randomize нужно вызывать один раз в начале программы
viewtopic.php?f=1&t=11145