43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
1

Найти среднее арифметическое каждой строки матрицы

07.11.2013, 18:51. Показов 1142. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
  var i,j,s:integer;
begin
  s:=0; 
 
    for i:=0 to StringGrid1.ColCount-1 do 
      for j:=0 to StringGrid1.RowCount-1 do 
        If strtoint(StringGrid1.Cells[i,j])<0 then
        s:=s+StrToInt(StringGrid1.Cells[i,j]);
      Label3.Caption:=IntToStr(s);
 
  
end;
 
procedure TForm1.Button2Click(Sender: TObject);
  var i,min,a,j:integer;
begin
 
  StringGrid1.ColCount:=StrToInt(Edit1.Text);
  StringGrid1.RowCount:=StrToInt(Edit1.Text);
  Edit1.SetFocus;
   
 
end;
 
end.
Как изменить данный код для того что бы считало среднеe арифметическое каждой строки матрицы и выводило их в дополнительный столбец?

Данный код пишет в Label3 сумму отрицательных элементов матрицы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2013, 18:51
Ответы с готовыми решениями:

Найти для каждой строки матрицы среднее арифметическое положительных элементов
Дана матрица A из N строк и N столбцов. Если в матрице А нет элементов, абсолютная величина которых...

Для каждой строки матрицы с нечетным номером найти среднее арифметическое ее элементов
Дана матрица размера MxN. Для каждой строки матрицы с нечетным номером найти среднее арифметическое...

Массив: Найти среднее арифметическое в каждой строке матрицы A и вычесть его из всех элементов этой строки...
Разработать программу для решения задачи. Протестировать разработанную программу методом...

Найти среднее арифметическое положительных элементов для каждой строки для данной квадратной матрицы
Можно без ввода/вывода. Условие: найти среднее арифметическое положительных элементов для каждой...

8
121 / 87 / 90
Регистрация: 30.12.2012
Сообщений: 511
07.11.2013, 22:06 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.ButtonClick(Sender: TObject);
var i,j:byte;
     sum:real;
begin
  for j := 0 to StringGrid1.RowCount - 1 do
  begin
    sum:=0;
    for i := 0 to StringGrid1.ColCount - 2 do
    begin
      StringGrid1.Cells[i,j]:=inttostr(Random(100)); // автоматическое заполнение
      sum:=sum+strtoint(StringGrid1.Cells[i,j]); // подсчет суммы строки
    end;
    StringGrid1.Cells[i,j]:=floattostr(sum/(StringGrid1.ColCount-1)); // заносим в последний столбец среднее арифметическое строки 
  end;
end;
1
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
07.11.2013, 22:48  [ТС] 3
Благодарю за старание, но видимо вы не уловили суть моего вопроса)
Матрица заполняется не рандомно,а именно пользователем.
Результат подсчета строки(в данном случае среднеарифмитическое) вноситься в дополнительный столбец, тоесть должно изменяться ColCount+1 от самой заданной матрицы.
0
121 / 87 / 90
Регистрация: 30.12.2012
Сообщений: 511
08.11.2013, 00:44 4
За возможность редактирования обычных ячеек в StringGrid отвечает значение goEditing из свойства Options.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var i,j:byte;
     sum:array of integer;
begin
  for j := 1 to StringGrid1.RowCount - 1 do
  begin
    SetLength(sum,j+1);
    for i := 1 to StringGrid1.ColCount - 1 do
      inc(sum[j],strtoint(StringGrid1.Cells[i,j]));
  end;
  StringGrid1.ColCount:=StringGrid1.ColCount+1;
  for i := 1 to StringGrid1.RowCount do
        StringGrid1.Cells[StringGrid1.ColCount-1, i] := floattostr(sum[i]/(StringGrid1.ColCount-2));
end;
0
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
08.11.2013, 12:27  [ТС] 5
Сам результат решения выдается не верный и в дополнительном столбце первое значение не выводиться.
0
121 / 87 / 90
Регистрация: 30.12.2012
Сообщений: 511
08.11.2013, 14:43 6
У меня всё работает правильно, прилагаю скриншот:
Кликните здесь для просмотра всего текста

Найти среднее арифметическое каждой строки матрицы


Покажите Ваш скриншот результата работы программы
1
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
08.11.2013, 15:23  [ТС] 7
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
 var i,j:byte;
     sum:array of integer;
begin
 
for j := 1 to StringGrid1.RowCount - 1 do   // öèêë ïî ñòðî÷êàì
  begin
    SetLength(sum,j+1); //SetLength èçìåíÿåò ðàçìåð ñòðîêè
    for i := 1 to StringGrid1.ColCount - 1 do        //öèêë ïî ñòîëáöàì
      inc(sum[j],strtoint(StringGrid1.Cells[i,j]));   //ïðîöåäóðà èíê óâåëè÷èâàåò ïîðÿäêîâóþ ïåðåìåííóþ ïåðåäàííóþ åìó
  end;
  StringGrid1.ColCount:=StringGrid1.ColCount+1;
  for i := 1 to StringGrid1.RowCount do
        StringGrid1.Cells[StringGrid1.ColCount-1, i] := floattostr(sum[i]/(StringGrid1.ColCount-2));
 
  
end;
 
procedure TForm1.Button2Click(Sender: TObject);
  var i,min,a,j:integer;
begin
 
  StringGrid1.ColCount:=StrToInt(Edit1.Text);
  StringGrid1.RowCount:=StrToInt(Edit1.Text);
  Edit1.SetFocus;
   
 
end;
 
end.
Вот пожалуйста полный код и сам скрин результата.
Миниатюры
Найти среднее арифметическое каждой строки матрицы  
0
пофигист широкого профиля
4682 / 3118 / 857
Регистрация: 15.07.2013
Сообщений: 17,989
08.11.2013, 15:38 8
Цитата Сообщение от Ника)) Посмотреть сообщение
сам скрин результата
А сравнить картинки грида у Developer и у вас? Неужели не видите разницы? А она называется FixedCols и FixedRows
0
121 / 87 / 90
Регистрация: 30.12.2012
Сообщений: 511
08.11.2013, 15:49 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ошибка была в том, что у меня были включены фиксированные строка и столбец, я отключил их (у Вас они тоже отключены) и изменил код, теперь все должно работать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var i,j:byte;
     sum:array of integer;
begin
  for j := 0 to StringGrid1.RowCount - 1 do
  begin
    SetLength(sum,j+1);
    for i := 0 to StringGrid1.ColCount - 1 do
      inc(sum[j],strtoint(StringGrid1.Cells[i,j]));
  end;
  StringGrid1.ColCount:=StringGrid1.ColCount+1;
  for i := 0 to StringGrid1.RowCount do
        StringGrid1.Cells[StringGrid1.ColCount-1, i] := floattostr(sum[i]/(StringGrid1.ColCount-1));
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2013, 15:49
Помогаю со студенческими работами здесь

Найти среднее арифметическое элементов каждой из строк этой матрицы
Помоги рассчитать среднее арифметическое элементов каждой из строк этой матрицы. unit Unit1; ...

Для каждой строки массива найти среднее арифметическое четных элементов
• для каждой стоки массива найти среднее арифметическое четных элементов; var x,s:integer;...

Найти среднее арифметическое элементов каждой диагонали квадратной матрицы, параллельной побочной
Matrix85. Дана квадратная матрица A порядка M. Найти среднее арифметиче- ское элементов каждой ее...

Для каждой строки двумерного массива найти среднее арифметическое четных элементов
для каждой строки двумерного массива найти среднее арифметическое четных элементов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru