Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > матрицы: сравнение


Автор: UpRe_ID 19.7.2007, 09:45
Дана матрица произвольного размера, т.е. n*m размеров .....
нужно сравнить столбцы в внутри матрицы и потом расставить их в порядке убывания, начиная с наибольшего. мне сказали что нуна пользоваться qeyrwbtq? я не раслышал использовал процедуру и то там коряво написал и всего лишь для матрицы 3*3
Код

program practica ;

const
  n = 3;
type
  matrix = array[1 .. n, 1 .. n] of integer;

procedure sort_column(var ar: matrix; x: integer);
var i, j, T: integer;
begin
  for i := 1 To n Do
    for j := n downto i + 1 do
      if ar[pred(j), x] < ar[j, x] then begin
        T := ar[pred(j), x]; ar[pred(j), x] := ar[j, x]; ar[j, x] := T
      end
end;

procedure sort_first_row(var ar: matrix);
var i, j, k, T: integer;
begin

  for i := 1 To n Do
    for j := n downto i + 1 do
      if ar[1, pred(j)] < ar[1, j] then

        for k := 1 to n do begin
          T := ar[k, pred(j)]; ar[k, pred(j)] := ar[k, j]; ar[k, j] := T
        end

end;

procedure print(const ar: matrix);
var i, j: integer;
begin

  for i := 1 to n do begin
    for j := 1 to n do write(ar[i, j]:3);
    writeln;
  end;

end;

const
  a: matrix = (
    (1, 9, 6), (2, 8, 5), (3, 7, 4)
  );

var i: integer;
begin
  for i := 1 to n do
    sort_column(a, i);
  print(a);

  sort_first_row(a);
  writeln;
  print(a);
end.


помогите испарвить ошибки.

Автор: volvo877 19.7.2007, 10:43
UpRe_ID, а вот теперь я не расслышал. Кто, говоришь программу-то написал? Ты?

Автор: UpRe_ID 19.7.2007, 11:16
ты )

Автор: UpRe_ID 19.7.2007, 13:28
Код

program practic;
type
matrica= array [1..15,1..15] of real;
var a:matrica;
i, j, k, n , m : byte;
b:real;
begin
write ('m=');
readln (m);
write('n=');
readln (n);
for i:=1 to m do
for j:= to n do
begin
write (' a[',i,',',j,']=');
readln (a[i,j]);
end;
writeln(' matrica a');
for i:=1 to m do
begin
for j:=1 to n do
write (a[i,j] , '')
writeln
end;
for j:=1 to n do
for k:=1 m-1 do
for i:=1 to m-k do
if a[i,j]< a[i+1, j] then
begin
b:=a[i,j];
a[i, j];=a[i+1, j];
a[i+1,j];=b;
end;
writeln ('preobrazovanaya matrica a');
for i:=1 to m do
begin
for j:=1 to n do
write (a[i,j], ' ');
writeln;
end;
end.



помогите отыскать лексические ошибки smile 

Автор: volvo877 19.7.2007, 13:40
Компилятор тебе на что? Просто так, чтоб место на диске занимал? Неужели твой компилятор не сказал, что в программе есть еще синтаксические ошибки?

Автор: UpRe_ID 19.7.2007, 14:07
говорил, и я уже их нашел, просто в начале было так в лом...))

Автор: UpRe_ID 20.7.2007, 09:06
Такс а не можете мою программку доделать\переделать чтоб она не числа в столбце меняла местами, а сами столбцы с большего на наименьшее

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)