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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение tech » 08.06.2016 22:59:16

Код: Выделить всё
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);
....


то массивы заполняются по-разному. Если передавать одинаковый второй параметр, то заполняются одинаково.
Последний раз редактировалось tech 09.06.2016 18:34:39, всего редактировалось 1 раз.
tech
незнакомец
 
Сообщения: 8
Зарегистрирован: 10.10.2010 13:05:20

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

Сообщение Дож » 08.06.2016 23:23:12

Потому что randomize сбрасывает рандом и он начинает генерить те же значения заново. randomize нужно вызывать один раз в начале программы
viewtopic.php?f=1&t=11145
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru