Только потому что не спиццо по ночам:
uses crt; //опциональная хр-нь для вывода в окошке
var
i, j, z, n, m: integer;
temp: char;
a: array [1..100,1..100] of char; //можно было сделать динамический массив
//но я ленивый и не помню, поэтому сделал просто и быстро (10 минут)
begin
read(n, m); //ввод размеров матрицы
For i:=1 to n do //начинаем заполнять матрицу.. .
begin
For j:=1 to m do
begin
a[i,j]:=chr(97+random(26)); //...латинскими строчными буквами.. .
//...для справки: диапазон с ord('a')=97 до ord('z')=122, chr возвращает соотв. букву
write(a[i,j],' '); //и выводим сразу
end;
writeln; //для красоты
end;
//сортировка пузырьком
for i:=1 to n do //отличается от ср-ки 1-мерного только этой строкой.. .
for z:=1 to m-1 do //отсюда обычная ср-ка 1-мерного массива (строки)
for j:=1 to m-z do
if a[i,j] > a[i,j+1] then //...и добавлением индекса строки "i"
begin
temp:=a[i,j];
a[i,j]:=a[i,j+1];
a[i,j+1]:=temp;
end;
//выводим готовую матрицу
For i:=1 to n do
begin
For j:=1 to m do
write(a[i,j],' ');
writeln;
end;
end.