Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 503

/ вопрос открыт /

Здравствуйте!
Помогите, пожалуйста, составить программу:
составить функцию, которая поменяет местами наименьшие элементы под и над главной диагональю матрицы.

_Spider_ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: _Spider_ (статус: Посетитель)
Вопрос отправлен: 8 декабря 2009, 22:36
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

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

Приложение:
  1. program p3503;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. Types;
  7.  
  8. const
  9.  
  10.  
  11. type
  12.  
  13. TMatrix = array[0..N - 1, 0..N - 1] of Integer;
  14.  
  15.  
  16. procedure RandomMatrix(var X: TMatrix);
  17. var
  18. i, j: Integer;
  19. begin
  20. for i:= 0 to N - 1 do
  21. for j:= 0 to N - 1 do
  22. X[i, j]:= Random(101) - 50;
  23. end;
  24.  
  25.  
  26. procedure OutMatrix(const X: TMatrix);
  27. var
  28. i, j: Integer;
  29. begin
  30. for i:= 0 to N - 1 do
  31. begin
  32. for j:= 0 to N - 1 do
  33. Write(X[i, j]: 5);
  34.  
  35. WriteLn;
  36. end;
  37. end;
  38.  
  39. procedure ExchangeMinElements(var X: TMatrix);
  40. var
  41. i, j, Min: Integer;
  42. MinAbove, MinBelow: TPoint;
  43. begin
  44. { 0 1 2 3
  45. 0 D A A A
  46. 1 B D A A
  47. 2 B B D A
  48. 3 B B B D }
  49.  
  50.  
  51.  
  52.  
  53.  
  54. Min:= MaxInt;
  55.  
  56.  
  57. if X[i, j] < Min
  58. then begin
  59. Min:= X[i, j];
  60. MinAbove.X:= j;
  61. MinAbove.Y:= i;
  62. end;
  63.  
  64. WriteLn;
  65. WriteLn(' Minimum above: [', MinAbove.Y, ', ', MinAbove.X, '] = ', Min);
  66.  
  67.  
  68. Min:= MaxInt;
  69.  
  70.  
  71. if X[i, j] < Min
  72. then begin
  73. Min:= X[i, j];
  74. MinBelow.X:= j;
  75. MinBelow.Y:= i;
  76. end;
  77.  
  78. WriteLn(' Minimum below: [', MinBelow.Y, ', ', MinBelow.X, '] = ', Min);
  79.  
  80.  
  81. X[MinBelow.Y, MinBelow.X]:= X[MinAbove.Y, MinAbove.X];
  82. X[MinAbove.Y, MinAbove.X]:= Min;
  83. end;
  84.  
  85. var
  86. X: TMatrix;
  87.  
  88. begin
  89. Randomize;
  90. RandomMatrix(X);
  91. WriteLn(#13#10' Source matrix: '#13#10);
  92. OutMatrix(X);
  93. ExchangeMinElements(X);
  94. WriteLn(#13#10' After exchange: '#13#10);
  95. OutMatrix(X);
  96.  
  97. ReadLn;
  98. end.


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 9 декабря 2009, 10:17
Оценка за ответ: 5

Комментарий к оценке: Большое спасибо!)

Мини-форум вопроса

Всего сообщений: 0.

9 декабря 2009, 08:42: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.03 сек.