Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2013, 01:16   #1
DreamzZz
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 15
По умолчанию Вычислить среднее арифметическое негативных значений элементов двухмерного массива

Здравствуйте, есть процедурка на кнопке

Код Delphi
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    If  (StringGrid1.Cells[j-1,i-1]='') Then
      SG1[i,j] := 0
    Else
      SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]);
  For i:=1 To 4 Do
    Begin
      max := SG1[i,1];
      For j:=2 To 5 Do
        If (SG1[i,j] > max) then
          max := SG1[i,j];
      SG2[i] := max;
    End;
  For i:=1 To 4 Do
    StringGrid2.Cells[0,i-1] := FloatToStr(SG2[i])
end;
Сейчас она выполняет вывод значений элементов максимальных значений элементов ряда двухмерного массива.
Нужно сделать что бы она выводила - среднее арифметическое негативных значений элементов двухмерного массива.

Вывод должен быть сюда



Полный код программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DB, ADODB;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    StringGrid2: TStringGrid;
    Label4: TLabel;
    Button6: TButton;
    Button7: TButton;
    ADOTable1: TADOTable;
    ADOConnection1: TADOConnection;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SG1 : Array[1..4,1..5] Of Real;
  SG2 : Array[1..4] Of Real;
  i, j, k, buf : Integer;
  max : Real;
  f:Text;
implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  k := 1;
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    Begin
      If ((k Mod 2) <> 0) Then
        StringGrid1.Cells[j-1,i-1] := FloatToStr(k - 1)
      Else
        StringGrid1.Cells[j-1,i-1] := FloatToStr(k + 1);
      k := k + 1;
    End;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Randomize;
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    StringGrid1.Cells[j-1,i-1] := FloatToStr(50 - Random(101));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    If  (StringGrid1.Cells[j-1,i-1]='') Then
      SG1[i,j] := 0
    Else
      SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]);
  For i:=1 To 4 Do
    Begin
      max := SG1[i,1];
      For j:=2 To 5 Do
        If (SG1[i,j] > max) then
          max := SG1[i,j];
      SG2[i] := max;
    End;
  For i:=1 To 4 Do
    StringGrid2.Cells[0,i-1] := FloatToStr(SG2[i])
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    StringGrid1.Cells[j-1,i-1] := ' ';

  For i:=1 To 4 Do
    Begin
      StringGrid2.Cells[0,i-1] := ' ';
      SG2[i] := 0;
    End;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Close
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  AssignFile(f,GetCurrentDir+'\F.txt');
  Reset(f);
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    Begin
      Read(f,buf);
      StringGrid1.Cells[j-1,i-1] := IntToStr(buf);
    End;
   CloseFile(f);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  With ADOTable1 Do
    Begin
      Active:=True;
      First;
      For i:=1 To 4 Do
      For j:=1 To 5 Do
        begin
          StringGrid1.Cells[j-1,i-1] := IntToStr(Integer(FieldValues['chislo']));
          Next;
        End;
    end;
  AdoConnection1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Помогите пожалуйста) Уже не знаю куда обратится

Последний раз редактировалось DreamzZz; 09.06.2013 в 01:22.
DreamzZz вне форума Ответить с цитированием
Старый 09.06.2013, 09:20   #2
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Код:
For i:=1 To 4 Do
Begin
  sum := 0;
  count := 0;
  
  For j:=1 To 5 Do
	If (SG1[i,j] < 0) then
	begin
	  sum := sum + SG1[i,j];
	  count := count + 1;
	end;
	  
  SG2[i] := sum div count;
End;

Последний раз редактировалось revizor; 09.06.2013 в 09:24. Причина: исправил ошибку
revizor вне форума Ответить с цитированием
Старый 09.06.2013, 09:27   #3
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Я бы еще проверку добавил
Код:
if (count > 0) then
  SG2[i] := sum / count
else
  SG2[i] := 0
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.06.2013, 18:53   #4
DreamzZz
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 15
По умолчанию

Вбил вместо того кода на кнопке RUN. Выбило -
http://i.piccy.info/i7/c432b1c8177e8...8531/qweqw.jpg
DreamzZz вне форума Ответить с цитированием
Старый 10.06.2013, 19:07   #5
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

неопределены переменные sum и count.

надо где нибудь добавить вот это
Код:
int count;
float sum;
revizor вне форума Ответить с цитированием
Старый 10.06.2013, 20:01   #6
DreamzZz
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 15
По умолчанию

Вышло такое
http://i.piccy.info/i7/440df33e6454f.../qweqweqwe.jpg
DreamzZz вне форума Ответить с цитированием
Старый 10.06.2013, 21:25   #7
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вместо
Код:
int count;
float sum;
Пишем
Код:
Var
Count : Byte;
Sum : real;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.06.2013, 23:58   #8
DreamzZz
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 15
По умолчанию

Прописал значения в вары, выдало такие ошибки-
http://i.piccy.info/i7/842bd42d674c9...weqweqweqw.jpg
DreamzZz вне форума Ответить с цитированием
Старый 11.06.2013, 05:55   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

ошибки начинаются с 94 строки а на скрине максимум 59)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 11.06.2013, 08:36   #10
DreamzZz
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 15
По умолчанию

Ошибки
http://i.piccy.info/i7/a0fe91881f764...076/awawaa.jpg
DreamzZz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы. Вычислить среднее арифметическое элементов матрицы. Асичка Помощь студентам 4 03.12.2012 20:06
Делфи.среднее геометрическое элементов массива.среднее арифметическое каждой строки матрицы Karrina Помощь студентам 0 06.12.2010 18:32
найти среднее арифметическое элементов массива состоящее из 5 элементов viatlon Общие вопросы C/C++ 9 12.12.2009 00:45
Вычислить сумму элементов главной и побочной диагонали двумерного массива , найти среднее арифметическое neBu4kaMaXiM Помощь студентам 7 24.02.2009 15:58
вычислить номер и величину максимального элемента массива, произведение элементов, среднее арифметическое Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 6 19.01.2009 16:35