Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 01.06.2009
Сообщений: 4
1

Упорядочить элементы столбцов матрицы по неубыванию, а сами столбцы по неубыванию характеристик строк

02.06.2009, 10:45. Просмотров 1609. Ответов 2
Метки нет (Все метки)

Пожалуйста помогите с задачей.
Язык Паскаль.

Дана матрица. Упорядочить элементы столбцов матрицы по неубыванию, а сами столбцы по неубыванию характеристик строк. Характеристикой столбца матрицы называется сумма его положительных четных элементов. Использовать пирамидальную сортировку, реализовав метод в виде подпрограммы.

Добавлено через 12 часов 13 минут 46 секунд
Помогите ктонибудь пожалуйста, завтра везти сдавать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2009, 10:45
Ответы с готовыми решениями:

Массив: Упорядочить элементы строк матрицы по возрастанию, а сами строки по неубыванию произведения четных элементов строк
Дана матрица. Упорядочить элементы строк матрицы по возрастанию, а сами строки по неубыванию...

Упорядочить элементы столбцов матрицы по неубыванию, а сами столбцы по возрастанию максимальных элементов столбцов
Дана матрица(8.9). Упорядочить элементы столбцов матрицы по неубыванию, а сами столбцы по...

Дана матрица. Упорядочить элементы строк матрицы по неубыванию, а сами строки по неубыванию модуля
Дана матрица. Упорядочить элементы строк матрицы по неубыванию, а сами строки по ...

Упорядочить столбцы матрицы по неубыванию характеристик
Дана целочисленная матрица A(M,N). Характеристикой j –го столбца матрицы назовем значение...

2
38 / 37 / 23
Регистрация: 01.06.2009
Сообщений: 59
02.06.2009, 16:35 2
Лучший ответ Сообщение было отмечено egr18 как решение

Решение

Ну смотри... Твою задачу можно решать по-разному, вот один из способов ее решения, обходящийся без дублирования кода (одна и та же процедура сначала сортирует элементы столбцов, а потом - сами столбцы в матрице):

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const
  rows = 5;
  cols = 8;
type
  column = array[1 .. rows] of integer;
  matrix = array[1 .. cols] of column;
 
  plain = array[1 .. rows * cols] of integer;
 
type
  TLessFunc = function(var X; i: integer; var Y; j: integer): boolean;
 
 
procedure HeapSort(Var arr; n: Integer;
          size: integer; fLess: TLessFunc);
var
  Left, Right: integer;
  x: plain;
  ar: plain absolute arr;
 
  procedure sift;
  var i, j: Integer;
  begin
    i := Left; j := 2*i;
 
    move(ar[pred(i)*size + 1], x[1], size*sizeof(integer));
 
    while j <= Right do begin
      if j < Right then
        if fLess(arr, j, arr, j + 1) then inc(j);
 
      if not fLess(x, 1, arr, j) then break;
      move(ar[pred(j)*size + 1], ar[pred(i)*size+1], size*sizeof(integer));
      i := j; j := 2 * i
    end;
 
    move(x[1], ar[pred(i)*size + 1], size*sizeof(integer));
  end;
 
var
  T: plain;
begin
  Left := Succ(n div 2); Right := n;
  while Left > 1 do begin
    Dec(Left); sift
  end;
 
  while Right > 1 do begin
    move(ar[pred(left)*size + 1], T[1], size*sizeof(integer));
    move(ar[pred(right)*size + 1], ar[pred(left)*size + 1], size*sizeof(integer));
    move(T[1], ar[pred(right)*size + 1], size*sizeof(integer));
 
    Dec(Right); sift
  end
end;
 
procedure print(const mx: matrix);
var
  i, j: integer;
begin
  for i := 1 to rows do begin
    for j := 1 to cols do
      write(mx[j, i]:4);
    writeln;
  end;
end;
 
{$f+}
function lessCol(var X; i: integer; var Y; j: integer): boolean;
var
  vX: matrix absolute X;
  vY: matrix absolute Y;
  k: integer;
  f1, f2: integer;
begin
  f1 := 0; f2 := 0;
  for k := 1 to rows do begin
    if (vX[i][k] > 0) and (vX[i][k] mod 2 = 0) then inc(f1, vX[i][k]);
    if (vY[j][k] > 0) and (vY[j][k] mod 2 = 0) then inc(f2, vY[j][k]);
  end;
  lessCol := f1 < f2;
end;
 
function lessInt(var X; i: integer; var Y; j: integer): boolean;
var
  vX: column absolute X;
  vY: column absolute Y;
begin
  lessInt := vX[i] < vY[j];
end;
{$f-}
 
var
  mx: matrix;
  i, j: integer;
begin
  for i := 1 to cols do
    for j := 1 to rows do
      mx[i, j] := random(30) - 5;
  writeln('до сортировки:');
  print(mx);
 
  { упорядочиваем элементы столбцов }
  for i := 1 to cols do begin
    heapSort(mx[i], rows, 1, lessInt);
  end;
 
  { теперь передвигаем столбцы }
  heapSort(mx, cols, rows, lessCol);
  writeln('после сортировки:');
  print(mx);
end.
Я знаю, это сложный способ, но поскольку других ответов все равно нет - то... Лучше хоть что-то, чем ничего.

egr18, если тебя этот способ заинтересует - пиши, расскажу подробнее, почему именно так, и что здесь зачем...
0
jek89
08.12.2010, 19:36 3
egr18,

Добавлено через 12 секунд
ты где учишся??
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2010, 19:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Упорядочить столбцы матрицы по неубыванию характеристик. Динамическая память
Дана целочисленная матрица A(M,N). Характеристикой j –го столбца матрицы назовем значение элемента,...

Упорядочить столбцы матрицы по неубыванию значений наименьших элементов столбцов
ПОМОГИТЕ ПОЖАЛУЙСТА СОСТАВИТ ПРОГРАММУ В ПАСКАЛЕ!!! Дана целочисленная матрица С размером MxN...

Упорядочить элементы строк матрицы по неубыванию
Дана матрица Х. Упорядочить элементы строк матрицы по неубыванию, а сами строки по возрастанию...

Упорядочить элементы столбцов матрицы по убыванию, а сами столбцы по возрастанию элементов 1-й строки
Дана матрица Х. Упорядочить элементы столбцов матрицы по убыванию, а сами столбцы по возрастанию...


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

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

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