Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
jestero
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
1

Сортировка элементов матрицы по возрастанию

31.01.2016, 19:48. Просмотров 904. Ответов 11
Метки нет (Все метки)

Дана матрица A(n,m) Случайных чисел генерированных в диапазоне от 12 до +24. Отсортировать элементы матрицы по возрастанию элементов.

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
const n=5;
m=5;
var a:array [1..n,1..m] of integer;
i,j,k,b:integer;
begin
randomize;
k:=0;
 
for i:=1 to n do
for j:=1 to m do 
   a[i,j]:=random(12)+12;
 
for b:=1 to n do
    for i:=1 to n do
    for j:=1 to m-1 do
        if a[i,j]>a[i,j+1] then begin
           k:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=k; end;
for b:=1 to n do
    for i:=2 to n do
    for j:=1 to m-1 do
        if a[i,j]>a[i,j+1] then begin
           k:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=k; end;
for b:=1 to n do
    for i:=3 to n do
    for j:=1 to m-1 do
        if a[i,j]>a[i,j+1] then begin
           k:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=k; end;
for b:=1 to n do
    for i:=4 to n do
    for j:=1 to m-1 do
        if a[i,j]>a[i,j+1] then begin
           k:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=k; end;
for b:=1 to n do
    for i:=5 to n do
    for j:=1 to m-1 do
        if a[i,j]>a[i,j+1] then begin
           k:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=k; end;
for i:=1 to n do begin
for j:=1 to m do 
    write (' ',a[i,j]);
    writeln; end;
end.
Что означает цикл по b в данной программе?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2016, 19:48
Ответы с готовыми решениями:

Сортировка по возрастанию элементов каждого столбца матрицы
Составьте программу, упорядочивающую по возрастанию элементы каждого столбца...

Сортировка столбцов матрицы по возрастанию сумм элементов столбца
Помогите пожалуйста разобраться с задачей: d vfccbdt mxn нужно отсартировать по...

Сортировка матрицы по возрастанию
Помогите с решением задачи, не могу доделать. Условия: Дана целая...

Сортировка матрицы по возрастанию
Задан двухмерный массив A(a_ij), де i=1,2…n , j=1,2…m, элементами которого...

Сортировка нечетных строк матрицы по возрастанию - блок-схема
i:=1; while i<=n do begin if odd (i) then for j:=1 to n-1 do for...

11
mamedovvms
2918 / 839 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
31.01.2016, 20:50 2
страшно подумать какой был бы код при n = 100

Добавлено через 1 минуту
jestero, я бы вам посоветовал поискать другое решение задачи
0
jestero
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
01.02.2016, 07:10  [ТС] 3
Цитата Сообщение от mamedovvms Посмотреть сообщение
jestero, я бы вам посоветовал поискать другое решение задачи
А как можно упростить код ? Какой алгоритм?
0
capricornus CF
315 / 205 / 162
Регистрация: 08.12.2015
Сообщений: 853
01.02.2016, 09:16 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Нужно просто выкинуть лишнее, ваш код и так сортирует все строки, зачем их повторно сортировать:

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
const
  n = 5;
  m = 5;
 
var
  a: array [1..n, 1..m] of integer;
  i, j, k, b: integer;
 
begin
  randomize;
  k := 0;
  
  for i := 1 to n do
    for j := 1 to m do 
      a[i, j] := random(13) + 12;
  
  for b := 1 to n do
    for i := 1 to n do
      for j := 1 to m - 1 do
        if a[i, j] > a[i, j + 1] then 
        begin
          k := a[i, j];a[i, j] := a[i, j + 1];a[i, j + 1] := k; 
        end;
  for i := 1 to n do 
  begin
    for j := 1 to m do 
      write(' ', a[i, j]);
    writeln; 
  end;
end.
Только этот код сортирует элементы в строках по возрастанию, а ваше задание какое?
1
jestero
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
01.02.2016, 10:35  [ТС] 5
Цитата Сообщение от capricornus CF Посмотреть сообщение
Только этот код сортирует элементы в строках по возрастанию, а ваше задание какое?
Задание как раз такое. Можете объяснить какую функцию выполняет цикл по b ?
0
Puporev
Модератор
55001 / 42300 / 29209
Регистрация: 18.05.2008
Сообщений: 99,947
01.02.2016, 13:01 6
Перебирает все строки
Pascal
17
for b := 1 to n do
0
jestero
11 / 11 / 2
Регистрация: 17.02.2014
Сообщений: 947
01.02.2016, 13:13  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
17
for b := 1 to n do
Так а внутри него ещё два цикла. Не подскажете тогда что они перебирают?
0
Puporev
Модератор
55001 / 42300 / 29209
Регистрация: 18.05.2008
Сообщений: 99,947
01.02.2016, 13:16 8
Они перебирают элементы строки для их сравнения и обмена
Pascal
18
19
for i := 1 to n do//от 1 до n
for j := 1 to m - 1 do//от 1 до n-1, m нужно заменить на n, они же равны
0
capricornus CF
315 / 205 / 162
Регистрация: 08.12.2015
Сообщений: 853
01.02.2016, 13:55 9
Цитата Сообщение от Puporev Посмотреть сообщение
нужно заменить на n, они же равны
Согласен, если планируются только квадратные массивы, то желательно одной константой.
0
Puporev
Модератор
55001 / 42300 / 29209
Регистрация: 18.05.2008
Сообщений: 99,947
01.02.2016, 14:08 10
А если не квадратные, то так
Pascal
1
2
3
for b := 1 to n do
    for i := 1 to m do
      for j := 1 to m - 1 do
0
mamedovvms
2918 / 839 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
01.02.2016, 19:47 11
Цитата Сообщение от jestero Посмотреть сообщение
Отсортировать элементы матрицы по возрастанию элементов
а я предположил что нужно не в каждой строке сортировать элементы а полностью во всем массиве
0
schoolteacher
39 / 39 / 49
Регистрация: 18.12.2015
Сообщений: 127
02.02.2016, 00:32 12
Вместо:
Цитата Сообщение от capricornus CF Посмотреть сообщение
for j := 1 to m - 1 do
можно
Pascal
1
19 for j := 1 to m - i do
0
02.02.2016, 00:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2016, 00:32

Сортировка элементов массива по возрастанию
Необходима сортировка эл-тов двумерного массива А по возрастанию по строкам...

Рекурсия: сортировка элементов массива по возрастанию
Помогите не могу понять где ошибка, может что-то не дописал, но массив не...

Сортировка строк в массиве по возрастанию последних элементов
Здравствуйте! Помогите пожалуйста решить следующую задачу: дан двумерный...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru