unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Button1: TButton;
StringGrid2: TStringGrid;
Label2: TLabel;
StringGrid3: TStringGrid;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
buf1:array[1..4] of real;
mas1:array[1..4,1..3] of real;
buf2:array[1..3] of real;
mas2:array[1..3,1..3] of real;
buf3:array[1..4] of real;
mas3:array[1..2,1..4] of real;
n1,n2,n3,i,j:integer;
min1,min2,min3:real;
begin
n1:=1;
for i:=1 to 4 do
for j:=1 to 3 do
begin
mas1[i,j]:=strtofloat(form1.StringGrid1.cells[i-1,j-1]);
buf1:=0;
end;
for i:=1 to 4 do
for j:=1 to 3 do
if mas1[i,j]>0 then
buf1:=buf1+mas1[i,j];
min1:=buf1[1];
for i:=1 to 4 do
if buf1< min1 then
begin
min1:=buf1;
n1:=i;
end;
form1.Label1.Caption:='меньше всего положительных элементов в столбце № '+IntToStr(n1)+' их сумма= '+floattostr(min1);
//------------------------------
n2:=1;
for i:=1 to 3 do
for j:=1 to 3 do
begin
mas2[i,j]:=strtofloat(form1.StringGrid2.cells[i-1,j-1]);
buf2:=0;
end;
for i:=1 to 3 do
for j:=1 to 3 do
if mas2[i,j]>0 then
buf2:=buf2+mas2[i,j];
min2:=buf2[1];
for i:=1 to 3 do
if buf2< min2 then
begin
min2:=buf2;
n2:=i;
end;
form1.Label2.Caption:='меньше всего положительных элементов в столбце № '+IntToStr(n2)+' их сумма= '+floattostr(min2);
//---------------------------------------
n3:=1;
for i:=1 to 2 do
for j:=1 to 4 do
begin
mas3[i,j]:=strtofloat(form1.StringGrid3.cells[i-1,j-1]);
buf3[i]:=0;
end;
for i:=1 to 2 do
for j:=1 to 4 do
if mas3[i,j]>0 then
buf3[i]:=buf3[i]+mas3[i,j];
min3:=buf3[1];
for i:=1 to 2 do
if buf3[i]< min3 then
begin
min3:=buf3[i];
n3:=i;
end;
form1.Label3.Caption:='меньше всего положительных элементов в столбце № '+IntToStr(n3)+' их сумма= '+floattostr(min3);
end;
end.
в 1 функцию или процедуру =)
кто мог бы помочь, стукните в icq 4903800 =)
файл исходника и проги моно скачать тут: http://www.ipoteka62.ru/2.rar (160 кб) =)
Нужно помочь оптимизировать алгоритм
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Опиши проблему.
дык, проблема только в коде, над сделать 1 функцию или процедуру =) а то код много места занимает, да и вобщее повторяется, только с разными массивами..
На каждый грид идет своя функиця. Ничего лишнего там нету. (В этом случае)
Если бы это был динамический грид с указанием полей, а не стабильно 3, тогда была бы 1 функция.
В цикле проще использовать :
StringGrid.ColCount
StringGrid.RowCount
Если бы это был динамический грид с указанием полей, а не стабильно 3, тогда была бы 1 функция.
В цикле проще использовать :
StringGrid.ColCount
StringGrid.RowCount
Сделал с динамическим гридом(пользователь задает кол-во столбцов и строк), иначе уменьшить функцию не получиться.
Добавился еще кое какой код, но он не значителен.
Исходники: http://rapidshare.com/files/81985600/re.zip.html
Добавился еще кое какой код, но он не значителен.
Код: Выделить всё
n1:=1;
for i := 1 to StringGrid1.ColCount do
for j := 1 to StringGrid1.RowCount do
begin
mas1[i,j]:=strtofloat(StringGrid1.cells[i-1,j-1]);
buf1[i]:=0;
end;
for i := 1 to StringGrid1.ColCount do
for j := 1 to StringGrid1.RowCount do
if mas1[i,j]>0 then
buf1[i]:=buf1[i]+mas1[i,j];
min1:=buf1[1];
for i := 1 to StringGrid1.ColCount do
if buf1[i]< min1 then
begin
min1:=buf1[i];
n1:=i;
end;
Label2.Caption:='меньше всего положительных элементов в столбце № '+IntToStr(n1)+' их сумма= '+floattostr(min1);
хера се, крут, после работы проверю, отпишусь как и чего =))