Первое.
var
a:array[0..9] of integer;
i,y,min:integer;
begin
randomize();
for i:=0 to 9 do
begin
y:= random(10);
a[i]:= y;
end;
for i:=0 to 9 do write(a[i],' ');
writeln(' - десять випадкових чисел');
min:=a[0];
for i:=1 to 9 do
if a[i]<min then min:=a[i];
writeln(min, ' - мiнiмальне число.');
end.
Второе
var
a:array[0..9] of integer;
i,y,s,max:integer;
begin
randomize();
for i:=0 to 9 do
begin
y:= random(10);
a[i]:= y;
end;
for i:=0 to 9 do write(a[i],' ');
writeln(' - десять випадкових чисел');
max:=a[0];
for i:=1 to 9 do
if a[i]<max then max:=a[i];
writeln(max, ' - максимальне число.');
s:=0; // сума чисел, що приймають таке значення
for i:=0 to 9 do
if a[i]=max then s:=s+1;
writeln('Зустричается ',s,' раз.');
end.
Объяснение:
В общем алгоритм такой.
Пусть мы имеем массив a[1..n, 1..n] из n*n элементов,
i - номер строки, j - номер столбца.
Спускаемся вниз по строкам до строки, номер которой отличается от того,
n - четное или нечетное.
В общем случае это номер i_ser, равный n делить на 2, и округленный до целого вниз.
Например, если n = 4, i_ser = 2, если n = 7, то i_ser = 3.
Для i от 1 до i_ser делать
начало
Для j от 1 до i делать
// здесь мы получаем нужные нам координаты i, j
конец
Если i_ser нечетно, то отдельно проходимся по строке с номером i_ser+1
Если i_ser нечетно то
начало
i_ser = i_ser + 1
Для j от 1 до i_ser делать
// здесь мы получаем нужные нам координаты i_ser, j
конец
i_ser = i_ser + 1
Для i от i_ser до n делать
начало
Для j от 1 до n - i + 1 делать
// здесь мы получаем нужные нам координаты i, j
конец