Ребят помогите пожалуйста с объяснением каждой строки в задачах пожалуйста, если можно по подробнее, очень нуждаюсь в этом. Буду душевно благодарен.
---
1. (Двумерный массив)
Дан двумерный массив размера M x N. Найти максимальный среди минимальных элементов ее строк.

Цитата

const n=3; m=4;
var a: array [1...n, 1...m] of integer;
b: array [1...m] of integer;
max i,j: integer;
begin
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(10);
write (a[i,j]:4);
end;
writeln
end;
for i:=1 to n do
begin
b[i]:=a[i,1];
for j:=1 to m do
if b[i] < a[i,j], then
b[i]:=a[i,j];
writeln(' ');
end;
min:=b[1];
for i:=1 to n do begin
if b[i] < min then min:=a[i];
readkey;
end.

---
2.(Строки)
Даны строки S и S0. Найти количество вхождений строки S0 в строку S.

Цитата

var
S,S0 : string;
flag : boolean;
cout : integer;
begin
write ('введите S:');
readln(S);
write ('введите S0:');
readln (S0);
flag:=false;
if (length (S) < length (S0)) then
write (flag);
else
begin
cout:=0;
temp:=copy (S,1,length (S0));
for i:=2 to length (S)-length(S0) do
begin
inc(cout);
temp:=copy (S,i,length (S0));
end;
else;
begin
temp:=copy (S,i,lenght (S0));
end;
end;
end;
writeln (cout);
end.