Показать сообщение отдельно
  #4  
Старый 11.09.2013, 12:01
Annihilator Annihilator вне форума
Прохожий
 
Регистрация: 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.
Общий смысл примерно такой. Только надо проверить, не ошибся ли где.
Ответить с цитированием