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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2016, 11:52   #1
kyle16
Форумчанин
 
Регистрация: 18.12.2015
Сообщений: 141
Вопрос отсортировать строки матрицы по возрастанию первого элемента строки. Не работает код в Паскале. Что исправить?

Задание: отсортировать строки матрицы по возрастанию первого элемента строки.
Вот код. Но он неполноценный. Как его исправить так чтоб он работал соответственно задаче?

Код:
const n = 50;
      m = 50;
type ar = array[1..n,1..m] of byte;     
var a,b: ar;     
    e,r,i,j,k,l,t: byte; 
Begin
  Readln(e,r);    
  randomize;
  for i:=1 to e do begin
    for j:=1 to r do begin
      a[i,j]:=random(100); 
      write(a[i,j]: 3);
    end;    
  writeln;
  end;
  writeln;
  for j:=1 to e do begin     
    b[i,j]:=a[j,1]; //первый столбец        
    write(b[i,j]:3);      
    writeln;  
  end;
  writeln;
 //сортировка первого столбца
  for l:=1 to e-1 do begin
    for k:=1 to e-l do begin
      if b[i,k] > b[i,k+1] then begin
        t:=b[i,k];
        b[i,k]:=b[i,k+1];
        b[i,k+1]:=t;        
      end;
    end;    
   end;
 //вывод отсортированного первого столбца  
   for l:=1 to e do begin
    writeln(b[i,l]:3);
   end;
End.

Последний раз редактировалось Аватар; 28.04.2016 в 11:57.
kyle16 вне форума Ответить с цитированием
Старый 28.04.2016, 12:11   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы сделал эту задачу так:
Код:
const n = 5;
      m = 20;
type TArr = array[1..n,1..m] of byte;
var a : TArr;
    tmp:byte;
    i,j,k,e,r : integer;
Begin
  Readln(e,r);
  randomize;
  for i:=1 to e do begin
    for j:=1 to r do begin
      a[i,j]:=random(100);
      write(a[i,j]: 3);
    end;
  writeln;
  end;
  writeln;
  
  for i:=1 to e-1 do
    for j:=i+1 to e do
      if a[i,1]>a[j,1] then // поменяем строки i и j местами
        for k:=1 to r do begin
          tmp:=a[i,k]; a[i,k]:=a[j,k]; a[j,k]:=tmp
        end;
        
   //вывод массива
  for i:=1 to e do begin
    for j:=1 to r do
      write(a[i,j]: 3);
    writeln;
  end;

End.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2016, 18:48   #3
kyle16
Форумчанин
 
Регистрация: 18.12.2015
Сообщений: 141
По умолчанию

Спасибо.
kyle16 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в паскале: Составить подпрограмму, определяющую номер строки с максимальной суммой положительных элементов этой строки матрицы Freeman000 Помощь студентам 6 17.12.2015 20:55
Дана матрица nxm. Отсортировать по возрастанию элементы стоящие по периметру матрицы, начиная с элемента A(n,1) по часовой стрелке Pr* Паскаль, Turbo Pascal, PascalABC.NET 0 17.06.2015 11:55
Сортировка каждого второго элемента строки матрицы по возрастанию anechka1034 Паскаль, Turbo Pascal, PascalABC.NET 6 22.03.2015 19:43
Отсортировать строки матрицы Си Александрq Помощь студентам 4 17.12.2012 09:41
Обработка матрицы. Первую и вторую строки отсортировать выбором по убыванию, пятый и шестой столбец отсортировать (С++) Sasha316 Помощь студентам 0 23.11.2012 00:48