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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 5 346

Раздел: Delphi » Прочее
/ вопрос открыт /

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

Приложение:
  1. unit U_F_1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, Grids;
  8.  
  9. type
  10. TF_1 = class(TForm)
  11. StringGrid1: TStringGrid;
  12. Button1: TButton;
  13. E_3: TEdit;
  14. L_3: TLabel;
  15. L_com_3: TLabel;
  16. L_4: TLabel;
  17. B_2: TButton;
  18. procedure Button1Click(Sender: TObject);
  19. procedure B_2Click(Sender: TObject);
  20. private
  21. { Private declarations }
  22. public
  23. { Public declarations }
  24. end;
  25.  
  26. var
  27. F_1: TF_1;
  28. const n=6;
  29. var
  30. m:array[1..n,1..n]of integer;
  31. i,j,index,k,max,buf:integer;
  32.  
  33. implementation
  34.  
  35. {$R *.dfm}
  36.  
  37.  
  38. procedure TF_1.Button1Click(Sender: TObject);
  39. {const n=6;
  40. var
  41. m:array[1..n,1..n]of integer;
  42. i,j,index,k,max,buf:integer; }
  43. begin
  44.  
  45. randomize;
  46.  
  47. for i:=1 to n do
  48. begin
  49.  
  50. for j:=1 to n do
  51.  
  52. begin
  53. m[i,j]:=random(10);
  54. StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
  55.  
  56. end;
  57.  
  58.  
  59. end;
  60. max:=m[1,1];
  61. index:=1;
  62. for i:=1 to n do
  63. if m[i,i]>max then
  64. begin
  65. max:=m[i,i];
  66. index:=i;
  67.  
  68.  
  69. end;
  70.  
  71.  
  72. end;
  73.  
  74. procedure TF_1.B_2Click(Sender: TObject);
  75. {const n=6;
  76. var
  77. m:array[1..n,1..n]of integer;
  78. i,j,index,k,max,buf:integer; }
  79. begin
  80.  
  81. max:=m[1,1];
  82. index:=1;
  83. for i:=1 to n do
  84. if m[i,i]>max then
  85. begin
  86. max:=m[i,i];
  87. index:=i;
  88. end;
  89. repeat
  90. k:=StrToInt(E_3.Text);
  91. until k in [1..n];
  92. if index<>k then
  93. for i:=1 to n do
  94. begin
  95. buf:=m[index,i];
  96. m[index,i]:=m[k,i];
  97. m[k,i]:=buf;
  98.  
  99. end;
  100. for i:=1 to n do
  101. begin
  102. for j:=1 to n do
  103. //StringGrid1.Cells[i-1,j-1] := inttostr(m[i,j]);
  104. StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
  105. end;
  106. end;
  107.  
  108. end.


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

Вопрос задал: Силиванов (статус: Посетитель)
Вопрос отправлен: 30 мая 2011, 19:59
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, Силиванов!
Решение в прилагаемом файле. Будут вопросы - пишите.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 4 июня 2011, 10:10


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

Всего сообщений: 21; последнее сообщение — 4 июня 2011, 09:42; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

Мережников Андрей

Мережников Андрей (статус: Абитуриент), 4 июня 2011, 09:42 [#21]:

вопрос - если в матрице несколько максимальных элементов, то что делать?

Страницы: [« Предыдущая] [1] [2]

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 20:25
Выполнено за 0.02 сек.