Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.10.2019
Сообщений: 7
1

В матрице н-го порядка сумму элементов, лежащих выше побочной диагонали, и произведение элементов, лежащих ниже главной

24.11.2019, 22:32. Показов 496. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выходит ошибка во 2й кнопке. Помогите пожалуйста исправить ее заранее спасибо!
Само задание: В матрице n-го порядка сумму элементов, лежащих выше побочной диагонали, и произведение элементов, лежащих ниже главной диагонали.
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const Nmax=10;
type
  Mas2=array[1..Nmax,1..nmax] of extended;
  Mas1=array[1..Nmax-1] of integer;
var
  Form1: TForm1;
   a:Mas2;
 b,y:Mas1;
 n:integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 n:=StrToInt(Edit1.Text);
 StringGrid1.ColCount:=n+1;
 StringGrid1.RowCount:=n+1;
for i:=1 to n do
 begin
   StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
   StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var max,min,i,j:integer;
 
begin
for i:=1 to n do
for j:=1 to n do
 a[i,j]:=StrToint(StringGrid1.Cells[j,i]);
begin
max:=strtoint(StringGrid1.Cells[2,1]);
for i:=2  to  N do
for j:=(N-i+2) to  N do
begin
if strtoint(StringGrid1.Cells[i,j])> max then max:=strtoint(StringGrid1.Cells[i,j]);
y[i]:=max;
 Label2.Caption:=inttostr(y[i]);
end;
min:=strtoint(StringGrid1.Cells[2,1]);
 
for i:=2 to  N-1 do
  for j:=n downto  (i+1) do
    begin
if strtoint(StringGrid1.Cells[j,i])<min then min:=strtoint(StringGrid1.Cells[j,i]);
b[i]:=min;
Label3.Caption:=IntToStr(b[i]);
end;
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 n:=3;
 Edit1.Text:=FloatToStr(n);
 StringGrid1.ColCount:=n+1;
 StringGrid1.RowCount:=n+1;
 StringGrid1.Cells[0,0]:='Массив А:';
 for i:=1 to n do
 begin
   StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
   StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
 end;
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2019, 22:32
Ответы с готовыми решениями:

В матрице n-го порядка найти максимальный среди элементов, лежащих ниже побочной диагонали
В матрице n-го порядка найти максимальный среди элементов лежащих ниже побочной диагонали и...

максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали.
Здравствуйте. Необходимо найти максимальный среди элементов, лежащих ниже побочной диагонали, и...

В матрице найти максимальный среди элементов, лежащих ниже побочной диагонали
Доброго всем! Может кто-нибудь помочь с задачкой? a)В матрице n-ого порядка найти максимальный...

Найти максимальный из элементов, лежащих ниже побочной диагонали
Помогите, пожалуйста! Нужно айти максимальный из элементов, лажащих ниже побочной диагонали, и...

1
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
25.11.2019, 06:26 2
Цитата Сообщение от Katou Посмотреть сообщение
Выходит ошибка во 2й кнопке
потому что там ищется максимальное и минимальное значение и то, полагаю, с ошибками. никакими суммами и произведениями и не пахнет в коде.

Еще я бы и подредактировал другие процедуры. зачем столько ненужных переменных и новых типов (я про массивы)?
а о динамических массивах слышали что-нибудь когда-нибудь?
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var
  Form1: TForm1;
   a:array of array of integer;
   n:integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 n:=3;
 Edit1.Text:=FloatToStr(n);
 StringGrid1.ColCount:=n+1;
 StringGrid1.RowCount:=n+1;
 StringGrid1.Cells[0,0]:='Массив А:';
 for i:=1 to n do begin
   StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
   StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
 Button2.Enabled := false;
 n:=StrToInt(Edit1.Text);
 StringGrid1.ColCount:=n+1;
 StringGrid1.RowCount:=n+1;
 SetLength(a, n+1, n+1);
 for i:=1 to n do begin
   StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
   StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
   end;
 
//заполнение массива случ числами (если лень вбивать все в гриде)
randomize;
for i := 1 to n do
for j := 1 to n do begin
    a[i,j] := Random(10);
    StringGrid1.Cells[j,i] := IntToStr(a[i,j]);
    end;
Button2.Enabled := true;
end;
 
 
 
 
procedure TForm1.Button2Click(Sender: TObject);
var
i,j,p,s:Integer;
begin
//считывание массива из Грида
for i := 1 to n do
for j := 1 to n do
    a[i,j] := StrToInt(StringGrid1.Cells[j,i]);
 
//Нахождение суммы элементов, лежащих выше побочной диагонали
s := 0;
for i := 1 to n-1 do
for j := 1 to n-i do s := s + a[i,j];
 
//Нахождение произведения элементов, лежащих ниже главной диагонали
p := 1;
for i := 2 to n do
for j := 1 to i-1 do p := p * a[i,j];
 
Label1.Caption := 'Сумма=' + IntToStr(s);
Label2.Caption := 'Произведение=' + IntToStr(p);
 
Button2.Enabled := false;
end;
Вычисления рекомендуется производить с элементами массива, а компоненты использовать только для ввода/вывода информации
0
25.11.2019, 06:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2019, 06:26
Помогаю со студенческими работами здесь

Найти максимальный среди элементов, лежащих ниже побочной диагонали
В матрице n-го порядка найти максимальный среди элементов, лежащих ниже побочной диагонали, и...

В матрице найти максимальный среди элементов, лежащих ниже главной диагонали
Задание: В матрице n-гo порядка найти максимальный среди элементов, лежащих ниже главной диагонали,...

Найти сумму элементов, лежащих на побочной диагонали и заменить ею максимальный элемент
Дана матрица T(4, 4) Найти сумму элементов, лежащих на побочной диагонали и заменить ею...

Найти сумму элементов, лежащих на побочной диагонали матрицы, и заменить ею максимальный элемент
Дана матрица T(4, 4). Найти сумму элементов, лежащих на побочной диагонали и заменить ею...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru