Консультация № 179943
15.09.2010, 23:09
41.76 руб.
0 3 1
Доброе время суток!
Программа на Дельфе (массивы)
Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.

Если кто сделает, просьба дать не только код, но и все исходники.

Обсуждение

Неизвестный
16.09.2010, 10:51
общий
это ответ
Здравствуйте, pikvar.
Предлагаю следующее решение Вашей задачи.

Описание:
На форме (fMain) расположены два компонента TLabel (labArray, labResult), два компонента TMemo (memArray, memResult), две кнопки TBitBtn (btnCalc, btnClose);
В memArray необходимо ввести двумерный массив с произвольным количеством элементов.
При нажатии на кнопку btnCalc вычисляется сумма элементов каждого столбца, результат выводится в memResult.
При нажатие на кнопку btnClose приложение закрывается.

Алгоритм решения:
Все действия производятся в при нажатии кнопки btnCalc (событие OnClick). Последовательно обрабатываются строки из memArray (строка преобразуется в последовательность целых чисел) и заполняется динамический массив a (a: array of array of integer;). После этого, полученный массив перебирается и высчитывается сумма.

Код:


procedure TfMain.btnCalcClick(Sender: TObject);
var
a: array of array of integer;
i,j,k,n,m,er,sum,p:integer;
st,sub: string;
begin

//Get array

n:= memArray.Lines.Count;
m:= 1;
for i:= 0 to n-1 do
begin
SetLength(a,i+1,m);
st:=memArray.Lines.Strings[i];

sub:='';
k:=0;
for j:=1 to Length(st) do
begin
if CharInSet(st[j],['0'..'9']) then
sub:=sub+st[j]
else
if sub<>'' then
begin
inc(k);
if k>m then
SetLength(a,i+1,k);
val(sub,a[i,k-1],er);
sub:='';
end;
end;
if sub<>'' then
begin
inc(k);
if k>m then
SetLength(a,i+1,k);
val(sub,a[i,k-1],er);
sub:='';
end;

if k<m then
for p := k+1 to m do
a[i,p-1]:=0
else m:=k;
end;

//Calc Sum
memResult.Lines.Clear;
memResult.Lines.Add('');
for i:=0 to m-1 do
begin
sum:=0;
for j:=0 to n-1 do
sum:=sum+a[j,i];
memResult.Lines.Strings[0]:=memResult.Lines.Strings[0]+' '+IntToStr(sum);
end;
SetLength(a,0,0);
end;



Исходник Delphi 2010
5
Неизвестный
16.09.2010, 11:23
общий
6a3uJI:
Ругается на "btnCalcClick" Где его прописать?
Неизвестный
16.09.2010, 19:09
общий
pikvar:
Это обработчик события onCLick для кнопки btnCalc. Выбери кнопку btnCalc, выбери закладку Events и дважды щелкни на событии onClick. Автоматически будет сформирована процедура, в нее и вставь содержимое приведенной выше процедуры.
Кстати я приложил исходник, можешь там детально ознакомиться и разобраться.
Форма ответа