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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 2 330

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

Приветствую, уважаемые эксперты! Возможно ли оптимизировать следующий код?

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, Grids;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. StringGrid1: TStringGrid;
  12. Button1: TButton;
  13. Label1: TLabel;
  14. Label2: TLabel;
  15. Label3: TLabel;
  16. Label4: TLabel;
  17. Label5: TLabel;
  18. Label6: TLabel;
  19. Label7: TLabel;
  20. Edit1: TEdit;
  21. Button2: TButton;
  22. procedure Button1Click(Sender: TObject);
  23.  
  24.  
  25. private
  26. { Private declarations }
  27. public
  28. { Public declarations }
  29. end;
  30.  
  31. var
  32. Form1: TForm1;
  33.  
  34. implementation
  35.  
  36. {$R *.dfm}
  37.  
  38. procedure TForm1.Button1Click(Sender: TObject);
  39. var a:array[0..5,0..5] of integer;
  40. i,j:integer;
  41. sum1,sum2,sum3,sum4,sum5,sum6,n,m,max:integer;
  42. b:string;
  43. begin
  44. Randomize;
  45. For i:=0 to 5 do
  46. For j :=0 to 5 do
  47. begin
  48. a[i,j]:=Random(18)+2;
  49. StringGrid1.Cells[i,j]:=IntTostr(a[i,j]);
  50. end;
  51.  
  52.  
  53. max:=0;
  54. sum1:=0;
  55. sum2:=0;
  56. sum3:=0;
  57. sum4:=0;
  58. sum5:=0;
  59. sum6:=0;
  60. b:='';
  61.  
  62. for i:=0 to 5 do begin
  63. sum1:=sum1+a[i,0];
  64. sum2:=sum2+a[i,1];
  65. sum3:=sum3+a[i,2];
  66. sum4:=sum4+a[i,3];
  67. sum5:=sum5+a[i,4];
  68. sum6:=sum6+a[i,5];
  69. end;
  70.  
  71.  
  72.  
  73.  
  74. If max<sum1 then begin b:='';max:=sum1;
  75. for i:=0 to 5 do
  76. b:=b+inttostr(a[i,0])+ ' ';
  77. end;
  78.  
  79. If max<sum2 then begin b:='';max:=sum2;
  80. for i:=0 to 5 do
  81. b:=b+inttostr(a[i,1])+ ' ';
  82. end;
  83.  
  84. If max<sum3 then begin b:='';max:=sum3;
  85. for i:=0 to 5 do
  86. b:=b+inttostr(a[i,2])+ ' ';
  87. end;
  88.  
  89. If max<sum4 then begin b:='';max:=sum4;
  90. for i:=0 to 5 do
  91. b:=b+inttostr(a[i,3])+ ' ';
  92. end;
  93.  
  94. If max<sum5 then begin b:='';max:=sum5;
  95. for i:=0 to 5 do
  96. b:=b+inttostr(a[i,4])+ ' ';
  97. end;
  98.  
  99. If max<sum6 then begin b:='';max:=sum6;
  100. for i:=0 to 5 do
  101. b:=b+inttostr(a[i,5])+ ' ';
  102. end;
  103.  
  104.  
  105. Label1.Caption:=inttostr(sum1);
  106. Label2.Caption:=inttostr(sum2);
  107. Label3.Caption:=inttostr(sum3);
  108. Label4.Caption:=inttostr(sum4);
  109. Label5.Caption:=inttostr(sum5);
  110. Label6.Caption:=inttostr(sum6);
  111. Label7.Caption:=inttostr(max);
  112.  
  113.  
  114. Edit1.Text:=b;
  115.  
  116. end;
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. end.
  125.  


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

Вопрос задала: Mania (статус: Посетитель)
Вопрос отправлен: 21 января 2009, 16:04
Состояние вопроса: открыт, ответов: 1.

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

Предлагаю похерить этот код и сделать, к примеру, так, как показано в проекте, написанном мной за 10 минут. Прицепляю к ответу.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 21 января 2009, 17:11


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

Всего сообщений: 10; последнее сообщение — 21 января 2009, 20:01; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 21 января 2009, 16:14 [#1]:

Код кашмарный. А где условие задачи?
Поиск строки матрицы с максимальной суммой элементов?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Mania

Mania (статус: Посетитель), 21 января 2009, 16:16 [#2]:

да + вывод этой строки
Вадим К

Вадим К (статус: Академик), 21 января 2009, 16:19 [#3]:

а о том, что sum можно сделать тоже массивом не думали?
тогда
for i:=0 to 5 do begin
sum1:=sum1+a[i,0];
sum2:=sum2+a[i,1];
sum3:=sum3+a[i,2];
sum4:=sum4+a[i,3];
sum5:=sum5+a[i,4];
sum6:=sum6+a[i,5];
end;
превращается в
for i:=0 to 5 do
for j:= 0 to 5 do
sum[j]:=sum[j]+a[i,j];
Ну и дальше поиск максимума тоже сворачивается в цикл...
Галочка "подтверждения прочтения" - вселенское зло.
Mania

Mania (статус: Посетитель), 21 января 2009, 16:21 [#4]:

думали, если честно, просто не получилось:( а как свернуть в цикл, что то нас девушек с логикой проблемы
Вадим К

Вадим К (статус: Академик), 21 января 2009, 16:27 [#5]:

главное развернуть могут, а нормальный, свернутый написать не могут...
Галочка "подтверждения прочтения" - вселенское зло.
Mania

Mania (статус: Посетитель), 21 января 2009, 16:30 [#6]:

ну настолько фантазии хватило, мы по природе просто длинные и обходные пути выбираем, на короткие не дано
Ученый

Ученый (статус: 8-ой класс), 21 января 2009, 16:33 [#7]:

Цитата:

мы по природе просто длинные и обходные пути выбираем

Природа не виновата, просто надо не лениться и потратить немного времени:)
Вадим К

Вадим К (статус: Академик), 21 января 2009, 19:01 [#8]:

to min@y™
Можно всё таки перестать употреблять не совсем культурную лексику?
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 21 января 2009, 19:47 [#9]:

2 Вадим К:
Я считаю, что в табуированную лексику не входят те слова, которые говорят по общедоступным каналам в ящике, т.к. там цензура существует.

Если тебе не нравится слово "похерить", то это НЕ значит, что оно "не совсем культурное" ©.
В данном слове корень "хер" означает букву старославянских азбук (кириллицы и глаголицы), которая со времён царя гороха пишется как "Х". В данном контексте "похерить" означает "зачеркнуть", "перечеркнуть". Взять, хотя бы, Лескова:

Цитата:


Владыка решение консисторское о назначении следствия хером перечеркнул.


З.Ы. Я уже начал привыкать к критике с твоей стороны. Однако, этот очередной оффтоп ты первый начал. Как всегда. Щас придёт админ, посты потрёт и повозмущается. Я не хотел отвечать, но не мог не ответить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 21 января 2009, 20:01 [#10]:

так можно и мат оправдать. Мы уже говорили на эту тему.
Галочка "подтверждения прочтения" - вселенское зло.

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

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