Найти в каждом из массивов минимальный элемент

Две задачи, которые нужно решить в одной программе.

1. Найти в каждом массиве А(n), B(m), C(k) минимальный элемент.

2. Вставить в Т массив 2 нулевых элементы, начиная с позиции, в которой находится минимальный элемент.

Все понятно, как делать. У меня они обе решены, и я их пыталась соединить. И у меня на подсчете минимальных элементов всех 4 массивов не работает. Не знаю, что и делать. Что не так?

Код программы без вставки 2 нулей:

PascalВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

program lab10a;
type mas=array[1..100] of integer;
 
procedure minim(x:mas; n:integer; var d1:integer);
var i,min,Nmin:integer;
begin
    min:=x[1];
    d1:=Nmin;
    for i:=2 to n do
     if x[i]<min then
      begin
       min:=x[i];
       Nmin:=i;
      end;
    Nmin:=d1;
    writeln('Минимальный элемент ',min);
    writeln('Номер минимального элемента ',d1);
end;
 
procedure vvod(x1:mas; n1:integer);
var j:integer;
begin
    for j:=1 to n1 do
    x1[j]:=random(30)-5;
    writeln('Исходный массив:');
    for j:=1 to n1 do
    write(x1[j],' ');
    writeln;
end;    
 
 
var A,B,C,T:mas;
    j,n,k,m,l,d:integer;
begin
    d:=1;
    write('Введите количество элементов массива А, n=');
    readln(n);
    write('Введите количество элементов массива B, m=');
    readln(m);
    write('Введите количество элементов массива C, k=');
    readln(k);
    write('Введите количество элементов массива T, l=');
    readln(l);
    
    vvod(A,n);
    vvod(B,m);
    vvod(C,k);
    vvod(T,l);
    
    minim(A,n,d);
    minim(B,m,d);
    minim(C,k,d);
    writeln('Массив Т:');
    minim(T,l,d);
     
end.

Где минимальный элемент пишет везде нули. Почему?

Если я правильно понимаю, то когда я вызываю процедуру для ввода массивов, они же там сохраняются? Или массивы остаются нулевыми, когда я вызываю другую процедуру?