![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
спасибо что поомгли в прошлой теме, но сейчас запутался как выести минимальную строку и ее номер в memo
Код:
begin
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);
With StringGrid1 do begin
RowCount:=n+1;ColCount:=n1+1;
for i:=0 to n do begin
sum:=0;
for j:=0 to n1 do begin
x[i+1,j+1]:= random(10)+2;
Cells[j,i]:= FormatFloat('0.00',x[i+1,j+1]);
sum:= sum + x[i+1,j+1];
end;
Memo1.Lines.Add('Сумма элементов '+inttostr(i+1)+'-ой строки = '+inttostr(sum));
end;
end;
end;
end; |
|
#2
|
||||
|
||||
|
Цитата:
![]() Видимо вам нужно получить индекс ячеки грида, содержащий минимальное значение? Попробуйте так: Код:
Var
Min: TPoint;
...
Min := Point(0, 0);
for i:=0 to n
do for j:=0 to n1
do if StrToFloat(Cells[j,i]) < StrToFloat(Cells[Min.X,Min.Y]) then Min := Point(i,j);
Memo1.Lines.Add('Минимальный элемент = ' + FloatToStr(Cells[Min.X,Min.Y]) + ' расположенный в строке ' + IntToStr(Min.Y)); |
|
#3
|
||||
|
||||
|
Есть подозрение что ТСу нужно такое, вывод чисто по предыдущей теме того же автора
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, n, n1: integer;
d: double;
tmp: array of double;
x: array of array of double;
begin
Randomize;
n:= Random(8) + 2;
n1:= Random(8) + 2;
Edit1.Text:= inttostr(n1);
Edit2.Text:= inttostr(n);
SetLength(x, n, n1);
with StringGrid1 do
begin
RowCount:= n; ColCount:= n1;
end;
for i := 0 to n-1 do
for j := 0 to n1-1 do
begin
x[i, j]:= Random;
StringGrid1.Cells[j, i]:= FloatToStr(x[i, j]);
end;
Memo1.Clear;
SetLength(tmp, n);
for i := 0 to n-1 do
begin
tmp[i]:= Sum(x[i]);
Memo1.Lines.Add('Сумма элементов '+inttostr(i+1)+'-ой строки = '+FloatToStr(tmp[i]));
end;
d:= MinValue(tmp);
Memo1.Lines.Add('');
for i := 0 to n-1 do
if tmp[i] = d then
Memo1.Lines.Add('Мин. сумма - ' + FloatToStr(tmp[i])+', строка ' + inttostr(i+1));
end; |
|
#4
|
||||
|
||||
|
Вполне возможно. Автор уж очень лаконично изложил проблему, вариантов сходу вот два уже придумали, а думаю это далеко не предел. Подождем виновника.
![]() |
|
#5
|
|||
|
|||
|
не очень разобрался с вашим кодом
вот мой и я так и не разобрался что мне делать ( Код:
begin
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);
With StringGrid1 do begin
RowCount:=n+1;ColCount:=n1+1;
for i:=0 to n do begin
sum:=0;
for j:=0 to n1 do begin
x[i+1,j+1]:= random(10)+2;
Cells[j,i]:= IntToStr(x[i+1,j+1]);
sum:= sum + x[i+1,j+1];
end;
Memo1.Lines.Add('Сумма элементов '+inttostr(i+1)+'-ой строки = '+inttostr(sum));
end;
end;
end; |
|
#6
|
||||
|
||||
|
Скопируйте да запустите, не забыв про юнит Math, баттон, два эдита, стрингрид и мемо... Что, не работает?
|
|
#7
|
|||
|
|||
|
ох, тему можно закрывать большое спасибо )
просто я сам кое что делал, но в итоге в мемо не то выводилось ... Код:
begin
Result := 0;
SumOld := 0;
Sum := 0;
randomize;
n:=random(8)+ 2;
n1:=random(8)+ 2;
Edit1.Text:=inttostr(n+1);
Edit2.Text:=inttostr(n1+1);
With StringGrid1 do begin
RowCount:=n+1;ColCount:=n1+1;
for i:=0 to n do begin
SumOld := Sum;
Sum := 0;
for j:=0 to n1 do begin
x[i+1,j+1]:= random(10)+2;
Cells[j,i]:= IntToStr(x[i+1,j+1]);
sum:= sum + x[i+1,j+1];
if Sum < SumOld then Result := i;
end;
Memo1.Lines.Add('Сумма элементов '+inttostr(i+1)+'-ой строки = '+inttostr(sum));
end;
Memo1.Lines.Add('Минимальный элемент в '+inttostr(Result+1) + '-ой строке');
end;
end; |