Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 2

Программа сортировки матрицы по столбцу

19.09.2015, 19:09. Показов 1055. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла необходимость написать программу по сортировке матрицы по столбцу на Паскале. Вроде бы программа и работает, но иногда бывает ошибка, когда матрица не до конца отсортировывается (1 строка стоит не на том месте). Помогите найти ошибку, пожалуйста. Заранее спасибо.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
uses crt;
const nmax=10;
type matr = array[1..nmax,1..nmax] of integer;
mas = array [1..nmax] of integer;
 
procedure Input (var a:matr; n,m:integer);
var
i,j:integer;
begin
Writeln ('Введите матрицу:');
for i:=1 to n do begin
    for j:=1 to m do begin
        gotoxy(5*j-4, 5+i);
        read (a[i,j]);
    end;
end;
end;
 
procedure SortMatrix (var a:matr; var b:mas; n,m,column:integer);
var
i,j,str, numbermax:integer;
f: array [1..nmax] of integer;
begin
for i:=1 to n do
    f[i]:=i;
writeln ('');
for i:=1 to n-1 do begin
      numbermax:=i;
      for j:=i to n do begin
          str:=f[j];
          if a[str,column]>a[numbermax,column] then begin
              numbermax:=j;
          end;
      end;
      str:=f[i];
      f[i]:=f[numbermax];
      f[numbermax]:=str;
end;
for i:=1 to n do begin
    str:=f[i];
    for j:=1 to m do begin
        gotoxy (42+5*j, 5+i);
        writeln (a[str,j]);
    end;
end;
end;
 
var
n,m,column:integer;
a:matr;
b: mas;
begin
writeln ('Введите кол-во строк');
readln (n);
writeln ('Введите кол-во столбцов');
readln (m);
Input (a,n,m);
writeln ('Введите номер столбца, по которому нужно отсортировать матрицу');
readln (column);
SortMatrix (a,b,n,m,column);
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2015, 19:09
Ответы с готовыми решениями:

Программа сортировки матрицы, работает только для квадратных
Помогите исправить, пожалуйста, программа должна работать для любых значений строк и столбцов, где логическая ошибка?( Постановка задачи:...

Если первый по строке и третий по столбцу элемент матрицы равен нулю, найти сумму положительных элементов матрицы
Помогите решить. Если первый по строке и третий по столбцу элемент матрицы равен нулю, найти сумму положительных элементов матрицы, в...

Программа с матрицей, сравнение ее элементов по столбцу
И снова прошу помощи продвинутых программистов! Задача связанная с матрицей. Задача: Составить программу, находящую в матрице D(m,n)...

3
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4500 / 1670
Регистрация: 01.02.2015
Сообщений: 13,919
Записей в блоге: 13
19.09.2015, 19:43
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Я просто не понял, зачем массив b
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
program q;
 
  //uses
  //  crt;
 
const
  nmax = 10;
type
  matr = array[1..nmax, 1..nmax] of integer;
  mas  = array [1..nmax] of integer;
 
  procedure Input(var a: matr; n, m: integer);
  var
    i, j: integer;
  begin
    Writeln('Введите матрицу:');
    for i := 1 to n do
    begin
      for j := 1 to m do
      begin
        //       gotoxy(5 * j - 4, 5 + i);
        //Read(a[i, j]);
        a[i, j] := random(100);
      end;
    end;
  end;
 
  procedure SortMatrix(var a: matr; n, m, column: integer);
  var
    i, j: integer;
    tmp:  integer;
  begin
    for i := 1 to n - 1 do
    begin
      for j := i + 1 to n do
        if a[i, column] > a[j, column] then
        begin
          tmp := a[i, column];
          a[i, column] := a[j, column];
          a[j, column] := tmp;
        end;
    end;
  end;
 
  procedure ShowMatrix(const a: matr; n, m: integer);
  var
    i, j: integer;
  begin
    for i := 1 to n do
    begin
      for j := 1 to m do
        Write(a[i, j]: 4);
      writeln;
    end;
  end;
 
var
  n, m, column: integer;
  a: matr;
  b: mas;
begin
  randomize;
  writeln('Введите кол-во строк');
  readln(n);
  writeln('Введите кол-во столбцов');
  readln(m);
  Input(a, n, m);
  ShowMatrix(a, n, m);
  writeln('Введите номер столбца, по которому нужно отсортировать матрицу');
  readln(column);
  SortMatrix(a, n, m, column);
  ShowMatrix(a, n, m);
end.
0
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 2
19.09.2015, 20:07  [ТС]
Этот массив я просто забыл стереть. Пузырек не подходит для сортировки, ибо слишком долгая сортировка, да и мне надо сортировать именно строки, а не сам столбец, что было написано в 1 сообщении. Но все равно спасибо за ответ.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4500 / 1670
Регистрация: 01.02.2015
Сообщений: 13,919
Записей в блоге: 13
19.09.2015, 20:33
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В Pascal есть трюк, когда матрицу объявляют построчно следующим образом
Pascal
1
2
3
4
5
6
type
  TRow = array [1..MM] of integer;
  TMatrix = array [1..NN] of TRow;
...............
var
  A: TMatrix;
Потом набирают какую нибудь сортировку массива
Pascal
1
  procedure Sort(var a: TRow; m: integer);
и вызывают её из программы для сортировки строки
Pascal
1
  Sort(A[r], m); {r - номер сортируемой строки}
Добавлено через 2 минуты
Цитата Сообщение от Кирюндель Посмотреть сообщение
Пузырек не подходит для сортировки, ибо слишком долгая сортировка,
Это при однократном вызове и nmax=10? Ха-ха.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.09.2015, 20:33
Помогаю со студенческими работами здесь

Сортировка матрицы по k-ому столбцу
Добрый день. В лабораторной работе нужно ввести с консоли n - размерность матрицы a . Задать значения элементов матрицы в интервале...

Сортировка матрицы по строке/столбцу
Как отсортировать матрицу по n строке? Нужно отсортировать матрицу, например по 2 столбцу. То есть упорядочить элементы 2 столбца, а...

Сортировка матрицы по заданному столбцу
Как сделать сортировку матрицы по заданному столбцу в javascript?

Сортировка матрицы по последнему столбцу
Нужно отсортировать матрицу по последнему столбцу. То есть в зависимости сортировки последнего столбца отсортировать всю матрицу. Я...

Связанная сортировка матрицы по столбцу
Здравствуйте, вы бы не могли мне помочь, у меня есть матрица 120 строк и 6 столбцов (или двухмерный массив), не подскажете как мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru