сортировка матрицы. в данной проге необходимо в начале вывести исходную матрицу в "красивом" виде на экран. можете подсказать в какую часть программы и что именно нужно вставить буду очень рада если исправите ошибки..
Отсортировать столбцы двумерного массива чисел (n х m) по неубыванию значений элементов в первой строке.
program ss2;
const l=100;
type arr = array[1..l] of integer;
var
a : array[1..l, 1..l] of integer;
b : arr;
i, j,n,m : integer;
procedure sortv(var a:arr; x: integer);
var
i,j,k : integer;
begin
for j:=2 to x do
begin
k:=a[j];
i:=j-1;
while (i>=1)and(a>k) do
begin
a[i+1]:=a;
dec(i);
end;
a[i+1]:=k;
end;
end;
begin
writeln('ââåäèòå êîëè÷åñòâî ñòðîê è ñòîëáöîâ');
readln(n,m);
writeln('ââåäèòå ýëåìåíòû ìàññèâà');
for i:=1 to n do
begin
for j:=1 to m do
read(a[i,j]);
end;
for j:= 1 to m do
begin
for i:= 1 to n do
begin
b:=a[i,j];
end;
sortv(b,n);
for i:= 1 to n do
begin
a[i,j]:=b;
end;
end;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j],' ');
writeln;
end;
end.
Другие языки программирования и технологии
нужна помощь с прогой на паскале. сортировка матрицы. в данной проге необходимо в начале вывести исходную матрицу в "кра
Как-то вот так:
const
l = 100;
type
arr = array[1..l] of integer;
var
a: array[1..l, 1..l] of integer;
b: arr;
i, j, n, m: integer;
procedure sortv(var a: arr; x: integer);
var
i, j, k: integer;
begin
for j := 2 to x do
begin
k := a[j];
i := j - 1;
while (i >= 1) and (a[ i ] > k) do
begin
a[i + 1] := a[ i ];
dec(i);
end;
a[i + 1] := k;
end;
end;
function LengthNum(N : Integer; L : Byte) : Byte;
function Max(A, B : Byte) : Byte;
begin
if A > B then Max := A else Max := B;
end;
var Res : Byte;
begin
if N = 0 then begin LengthNum := Max(1, L); Exit; end;
Res := 0; if N < 0 then begin Inc(Res); N := Abs(N); end;
while N > 0 do
begin
Inc(Res); N := N div 10;
end;
LengthNum := Max(L, Res);
end;
var
MaxL : Byte;
begin
WriteLn('Введите размерность массива NxM:');
Write('N = '); ReadLn(N);
Write('M = '); ReadLn(M);
WriteLn('Введите значения массива: ');
MaxL := 0;
for i := 1 to n do
for j := 1 to m do
begin
Write('A[', i, ',', j, '] = '); ReadLn(a[i, j]);
MaxL := LengthNum(a[i, j], MaxL);
end;
Inc(MaxL);
WriteLn('Исходная матрица: ');
for i := 1 to n do
begin
for j := 1 to m do Write(a[i, j]:MaxL);
WriteLn;
end;
for j := 1 to M do
begin
for i := 1 to N do b[ i ] := a[i, j];
sortv(b, n);
for i := 1 to n do a[i, j] := b[ i ];
end;
WriteLn('Матрица отсортированная по столбцам: ');
for i := 1 to n do
begin
for j := 1 to m do Write(a[i, j]:MaxL);
WriteLn;
end;
end.
Убрал лишние операторные скобки.
Добавил информативности.
Вот такой результат работы:
Введите размерность массива NxM:
N = 3
M = 3
Введите значения массива:
A[1,1] = 159
A[1,2] = 951
A[1,3] = -753
A[2,1] = 159
A[2,2] = -852
A[2,3] = -654
A[3,1] = +123
A[3,2] = -321
A[3,3] = 123
Исходная матрица:
__159__951_−753
__159_−852_−654
__123_−321__123
Матрица отсортированная по столбцам:
__123_ −852_−753
__159_−321_−654
__159__951__123
Майл съел лишние пробелы (я их заменил на символ «_»), но в Паскале всё должно получиться красиво!
Только со значением константы l небольшой перебор.
Вполне достаточно 10 или 20!
const
l = 100;
type
arr = array[1..l] of integer;
var
a: array[1..l, 1..l] of integer;
b: arr;
i, j, n, m: integer;
procedure sortv(var a: arr; x: integer);
var
i, j, k: integer;
begin
for j := 2 to x do
begin
k := a[j];
i := j - 1;
while (i >= 1) and (a[ i ] > k) do
begin
a[i + 1] := a[ i ];
dec(i);
end;
a[i + 1] := k;
end;
end;
function LengthNum(N : Integer; L : Byte) : Byte;
function Max(A, B : Byte) : Byte;
begin
if A > B then Max := A else Max := B;
end;
var Res : Byte;
begin
if N = 0 then begin LengthNum := Max(1, L); Exit; end;
Res := 0; if N < 0 then begin Inc(Res); N := Abs(N); end;
while N > 0 do
begin
Inc(Res); N := N div 10;
end;
LengthNum := Max(L, Res);
end;
var
MaxL : Byte;
begin
WriteLn('Введите размерность массива NxM:');
Write('N = '); ReadLn(N);
Write('M = '); ReadLn(M);
WriteLn('Введите значения массива: ');
MaxL := 0;
for i := 1 to n do
for j := 1 to m do
begin
Write('A[', i, ',', j, '] = '); ReadLn(a[i, j]);
MaxL := LengthNum(a[i, j], MaxL);
end;
Inc(MaxL);
WriteLn('Исходная матрица: ');
for i := 1 to n do
begin
for j := 1 to m do Write(a[i, j]:MaxL);
WriteLn;
end;
for j := 1 to M do
begin
for i := 1 to N do b[ i ] := a[i, j];
sortv(b, n);
for i := 1 to n do a[i, j] := b[ i ];
end;
WriteLn('Матрица отсортированная по столбцам: ');
for i := 1 to n do
begin
for j := 1 to m do Write(a[i, j]:MaxL);
WriteLn;
end;
end.
Убрал лишние операторные скобки.
Добавил информативности.
Вот такой результат работы:
Введите размерность массива NxM:
N = 3
M = 3
Введите значения массива:
A[1,1] = 159
A[1,2] = 951
A[1,3] = -753
A[2,1] = 159
A[2,2] = -852
A[2,3] = -654
A[3,1] = +123
A[3,2] = -321
A[3,3] = 123
Исходная матрица:
__159__951_−753
__159_−852_−654
__123_−321__123
Матрица отсортированная по столбцам:
__123_ −852_−753
__159_−321_−654
__159__951__123
Майл съел лишние пробелы (я их заменил на символ «_»), но в Паскале всё должно получиться красиво!
Только со значением константы l небольшой перебор.
Вполне достаточно 10 или 20!
Похожие вопросы
- TurboPascal. Дана матрица целых чисел. Возвести её во вторую степень, вывести исходную и полученную матрицы
- Нужна помощь в решении задачи по С++ связанная с матрицами
- С помощью какой проги можно отсоединить голос от мелодии????
- Нужна помощь с 1 прогой в Pascal. с использованием файлов???
- Нужна помощь с паскалем!
- Мне нужна ссылка на прогу для взлома Одноклассников
- Не могу найти, где ошибка в проге и нужна помощь в составлении блоксхемы. Program zadacha1; uses crt; var i,t, j: b
- с помощью каких прог делают сайты?
- С помощью какой проги можно повысить качество звучания трека от 16 кбит до 320 кбит?
- Нужен скрипт, бинд, прога, макрос, хоткей. Что угодно. Помогите, пожалуйста, очень нужно.