Ко 2-ой задаче:
Код
uses
  crt;
var
  a: array[1..10] of integer;
  pos_max, pos_min,max,min,i,temp: integer;
begin
  ClrScr;
  randomize;
  for i:=1 to 10 do
    a[i]:=random(10);
  for i:=1 to 10 do
    write(a[i], '  ');
  writeln;
  {find max}
  max:=a[1];
  pos_max:=1;
  for i:=1 to 10 do
    begin
      if a[i] > max then
        begin
          max:=a[i];
          pos_max:=i;
        end;
    end;
  {find min}
  min:=a[1];
  pos_min:=1;
  for i:=1 to 10 do
    begin
      if a[i] < min then
        begin
          min:=a[i];
          pos_min:=i;
        end;
    end;
  {min - max}
  temp:=a[pos_min];
  a[pos_min]:=a[pos_max];
  a[pos_max]:=temp;
  for i:=1 to 10 do
    write(a[i], '  ');
  readln;
end.
Правда это решение для одномерного массива, алгоритм такой:
1. Заполняем массив случ. числами
2. Выводим его
3. Ищем максимальный эл-т и запоминаем его позицию.
4. Ищем минимальный эл-т и запоминаем его позицию.
5. Меняем местами мин. и макс. 
Для двумерного массива (матрицы) попробуй сделать сам.
Тем более, что делается аналогично.