Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2012, 23:19   #1
siner
Пользователь
 
Регистрация: 05.11.2012
Сообщений: 15
Радость сортировка строк матрицы по убыванию значений элементов столбца

код для сортировки строк матрицы по убыванию значений элементов столбца, задаваемого пользователем:
Код:
uses crt;
const nmax=20;
type mas=array [1..nmax] of integer;
     mtr=array[1..nmax] of mas;
procedure sort(l,r:integer; var x:mtr; y:byte);
var i,j,m:byte;
    x1:integer;
    y1:mas;
begin
  i:=l;
  j:=r;
  m:=round((l+r)/2);
  x1:=x[m][y];
  repeat
    while x[i][y]>x1 do i:=i+1;
    while x[j][y]<x1 do j:=j-1;
    if i<=j then
     begin
      y1:=x[i];
      x[i]:=x[j];
      x[j]:=y1;
      i:=i+1;
      j:=j-1;
     end;
  until i>j;
  if l<j then sort(l,j,x,y);
  if i<r then sort(i,r,x,y);
end;
procedure inputmatr(var n,m,y:byte; x:mtr);
var i,j:byte;
begin
clrscr;
repeat
write('кол-во строк: ');
readln(n);
until n in [1..nmax];
repeat
write('кол-во столбцов: ');
readln(m);
until m in [1..nmax];
repeat
write('номер столбца от 1 до ',m,': ');
readln(y);
until y in [1..m];
for i:=1 to n do begin
  for j:=1 to m do begin
    Write('введите элемент [',i,'][',j,']: ');
    Readln(x[i][j]);
  end;
end;
end;
procedure outputmatr(var n,m,y:byte; x:mtr);
var i,j:byte;
begin
writeln('исходная матрица:');
for i:=1 to n do begin
  for j:=1 to m do
    Write(x[i][j]:5);
    writeln;
end;
sort(1,n,x,y);
writeln('матрица после сортировки:');
for i:=1 to n do begin
  for j:=1 to m do
  write(x[i][j]:5);
  writeln;
  end;
end;
var n,m,y,i,j:byte;
    x:mtr;
begin
inputmatr(n,m,x,y);
outputmatr(n,m,x,y);
end.
ошибка: тип фактического параметра-переменной array [1..20] of array [1..20] of integer отличается от типа формального параметра byte.
как можно исправить?

_________
Убедительнейшая просьба - давать название темы так,
чтобы название адекватно отражало суть решаемой задачи/проблемы.
эту тему я исправил.
Но в будущем неукоснительно соблюдайте это правило!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.11.2012 в 08:19.
siner вне форума Ответить с цитированием
Старый 14.11.2012, 00:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Правильно передавать параметры. У вас матрица передается не 3-м параметром.
p51x вне форума Ответить с цитированием
Старый 14.11.2012, 08:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

исправить выделенное:
Код:
procedure inputmatr(var n,m,y:byte; var x:mtr);
var i,j:byte;
begin
................


var n,m,y,i,j:byte;
    x:mtr;
begin
  inputmatr(n,m,y, x);
  outputmatr(n,m,y, x);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимальный элемент среди всех элементов тех строк заданной матрицы, которые упорядочены по убыванию. KObotan Общие вопросы C/C++ 4 16.09.2012 14:54
Как найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов INFINITIFX Общие вопросы C/C++ 2 11.11.2010 09:55
(c++) Сортировка строк матрицы по возрастанию первых элементов Serg046 Помощь студентам 3 07.01.2010 23:17
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13
сортировка стоблцов матрицы по убыванию сумм их элементов rev1ver Паскаль, Turbo Pascal, PascalABC.NET 6 14.01.2009 19:18