|
Вопрос # 2 330/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! Возможно ли оптимизировать следующий код?
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, Grids;
-
- type
- TForm1 = class(TForm)
- StringGrid1: TStringGrid;
- Button1: TButton;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- Label7: TLabel;
- Edit1: TEdit;
- Button2: TButton;
- procedure Button1Click(Sender: TObject);
-
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.Button1Click(Sender: TObject);
- var a:array[0..5,0..5] of integer;
- i,j:integer;
- sum1,sum2,sum3,sum4,sum5,sum6,n,m,max:integer;
- b:string;
- begin
- Randomize;
- For i:=0 to 5 do
- For j :=0 to 5 do
- begin
- a[i,j]:=Random(18)+2;
- StringGrid1.Cells[i,j]:=IntTostr(a[i,j]);
- end;
-
-
- max:=0;
- sum1:=0;
- sum2:=0;
- sum3:=0;
- sum4:=0;
- sum5:=0;
- sum6:=0;
- b:='';
-
- 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;
-
-
-
-
- If max<sum1 then begin b:='';max:=sum1;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,0])+ ' ';
- end;
-
- If max<sum2 then begin b:='';max:=sum2;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,1])+ ' ';
- end;
-
- If max<sum3 then begin b:='';max:=sum3;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,2])+ ' ';
- end;
-
- If max<sum4 then begin b:='';max:=sum4;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,3])+ ' ';
- end;
-
- If max<sum5 then begin b:='';max:=sum5;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,4])+ ' ';
- end;
-
- If max<sum6 then begin b:='';max:=sum6;
- for i:=0 to 5 do
- b:=b+inttostr(a[i,5])+ ' ';
- end;
-
-
- Label1.Caption:=inttostr(sum1);
- Label2.Caption:=inttostr(sum2);
- Label3.Caption:=inttostr(sum3);
- Label4.Caption:=inttostr(sum4);
- Label5.Caption:=inttostr(sum5);
- Label6.Caption:=inttostr(sum6);
- Label7.Caption:=inttostr(max);
-
-
- Edit1.Text:=b;
-
- end;
-
-
-
-
-
-
-
- end.
-
 |
Вопрос задала: 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™ (статус: Доктор наук), 21 января 2009, 16:14 [#1]:
Код кашмарный. А где условие задачи?
Поиск строки матрицы с максимальной суммой элементов?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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 (статус: Посетитель), 21 января 2009, 16:21 [#4]:
думали, если честно, просто не получилось а как свернуть в цикл, что то нас девушек с логикой проблемы
|
|
Вадим К (статус: Академик), 21 января 2009, 16:27 [#5]:
главное развернуть могут, а нормальный, свернутый написать не могут...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Mania (статус: Посетитель), 21 января 2009, 16:30 [#6]:
ну настолько фантазии хватило, мы по природе просто длинные и обходные пути выбираем, на короткие не дано
|
|
Ученый (статус: 8-ой класс), 21 января 2009, 16:33 [#7]:
Цитата:
мы по природе просто длинные и обходные пути выбираем
Природа не виновата, просто надо не лениться и потратить немного времени
|
|
Вадим К (статус: Академик), 21 января 2009, 19:01 [#8]:
to min@y™
Можно всё таки перестать употреблять не совсем культурную лексику?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 21 января 2009, 19:47 [#9]:
2 Вадим К:
Я считаю, что в табуированную лексику не входят те слова, которые говорят по общедоступным каналам в ящике, т.к. там цензура существует.
Если тебе не нравится слово "похерить", то это НЕ значит, что оно "не совсем культурное" ©.
В данном слове корень "хер" означает букву старославянских азбук (кириллицы и глаголицы), которая со времён царя гороха пишется как "Х". В данном контексте "похерить" означает "зачеркнуть", "перечеркнуть". Взять, хотя бы, Лескова:
Цитата:
Владыка решение консисторское о назначении следствия хером перечеркнул.
З.Ы. Я уже начал привыкать к критике с твоей стороны. Однако, этот очередной оффтоп ты первый начал. Как всегда. Щас придёт админ, посты потрёт и повозмущается. Я не хотел отвечать, но не мог не ответить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 21 января 2009, 20:01 [#10]:
так можно и мат оправдать. Мы уже говорили на эту тему.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|