11.09.2013, 12:01
|
Прохожий
|
|
Регистрация: 16.06.2013
Сообщения: 29
Версия Delphi: Delphi XE 2
Репутация: 10
|
|
Сейчас изображу что нибудь
Первую часть можно решить как-то так, например:
Код:
procedure TForm1.calculation(const m, n: integer);
var
a: array of array of integer;
row,col,count, sum:integer;
mean:double;
begin
//m - строки, n - столбцы
{выделяем память под массив и заполняем рандомами 0-39}
setlength(a, m, n);
randomize;
for row:=0 to high(a) do
begin
for col:=0 to high(a[0]) do
begin
a[row,col]:=random(40);
end;
end;
{Пробегаем по 1 столбцу и считаем среднее арифметическое}
sum:=0;
for row:=0 to high(a) do
begin
sum:=sum+a[row,0];
end;
mean:=sum / length(a); //cреднее арифметическое
.......
end;
Дальше, сейчас подумаю, не совсем понятно условие.
Код:
unit uMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
T2DIntegerDynArray = array of array of integer;
TForm1 = class(TForm)
edtM: TEdit;
edtN: TEdit;
Label1: TLabel;
Label2: TLabel;
memLog: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure calculation(const m,n:integer);
function getNextCount(const a:T2DIntegerDynArray; const col:integer):integer;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
m,n:integer;
begin
m:= StrToInt(edtM.Text);
n:=StrToInt(edtN.Text);
calculation(m,n);
end;
procedure TForm1.calculation(const m, n: integer);
var
a: T2DIntegerDynArray;
row,col, count:integer;
s:string;
begin
//m - строки, n - столбцы
{выделяем память под массив и заполняем рандомами 0-39}
Randomize;
setlength(a, m, n);
for row:=0 to high(a) do
begin
s:='';
for col:=0 to high(a[0]) do
begin
a[row,col]:=random(40);
s:=s+' '+ IntToStr(a[row,col]);
end;
memLog.Lines.Add(Format('Строка №%d (%s)',[row, s]));
end;
for col:=0 to high(a[0])-1 do
begin
count:=getNextCount(a, col);
memLog.Lines.Add(Format('Столбец %d, результат = %d',[col+1, count]));
end;
end;
function TForm1.getNextCount(const a: T2DIntegerDynArray; const col: integer): integer;
var
sum, row:integer;
mean :double;
begin
sum:=0;
result:=0;
for row:=0 to high(a) do sum:=sum+a[row,col];
mean:=sum / length(a); //cреднее арифметическое
memLog.Lines.Add(Format('Среднее арифметическое для столбца №%d = %n',[col,mean]));
for row:=0 to high(a) do if a[row, col+1] > mean then inc(result);
end;
end.
Общий смысл примерно такой. Только надо проверить, не ошибся ли где.
|