unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, MyMath;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A : TMas; // Объявление двухмерного массива
n,m: integer;
i,j : integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
n:=4; // Число строк в массиве
m:=4; // Число столбцов в массиве
Edit1.Text:='4';
Edit2.Text:='4';
StringGrid1.Cells[0,0]:='A';
for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button1Click(Sender: TObject); // Изменить размер
begin
n:=StrToInt(Edit1.Text); // Число строк в массиве
m:=StrToInt(Edit2.Text); // Число столбцов в массиве
{Задание числа строк и столбцов в таблице}
StringGrid1.RowCount:=N+1;
StringGrid1.ColCount:=M+1;
for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);
end;
procedure TForm1.Button2Click(Sender: TObject);
var ne, p, min, max, smin, smax, k, u : integer;
begin
Memo1.Clear;
{Заполнение массива А элементами из таблицы StringGrid1}
for i:=1 to n do
for j:=1 to m do
A[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
{Расчет}
Matric(A,n,m,min,max,smin,smax,k,u);
{ Вывод результата }
Memo1.Lines.Add('Сумма минимальных = '+IntToStr(smin));
Memo1.Lines.Add('Сумма максимальных = '+IntToStr(smax));
end;
end.
Object Pascal импользование подпрограмм и модулей.
"Дана целочисленная матрица размером NxM. Найти сумму наименьших элементов ее нечетных строк и наибольших элементов ее четных строк."
Соответственно нужно сделать интерфейс и написать код программы с использованием подключаемого модуля.
Мучаюсь с заданием уже третьи сутки в итоге пришёл к следующему варианту.
Код:
К нему подключаю модуль под названием MyMath.pas
Код:
unit MyMath;
interface
type TMas = array[1..10, 1..10] of integer;
Procedure Matric(A : TMas; n,m : integer; var min, max, smin, smax, k, u : integer);
implementation
Procedure Matric(A : TMas; n,m : integer; var min, max, smin, smax, k, u : integer);
var i,j : integer;
begin
k:=1;
min:=A[1,1];
smin:=0;
smax:=0;
for i:=1 to n do begin if (k<>i)and (odd(k)) then smin:=smin+min;
for j:=1 to m do
if (A[i,j]<min)and (odd(i)) then begin min:=A[i,j];
end; k:=i; end;
end;
end.
interface
type TMas = array[1..10, 1..10] of integer;
Procedure Matric(A : TMas; n,m : integer; var min, max, smin, smax, k, u : integer);
implementation
Procedure Matric(A : TMas; n,m : integer; var min, max, smin, smax, k, u : integer);
var i,j : integer;
begin
k:=1;
min:=A[1,1];
smin:=0;
smax:=0;
for i:=1 to n do begin if (k<>i)and (odd(k)) then smin:=smin+min;
for j:=1 to m do
if (A[i,j]<min)and (odd(i)) then begin min:=A[i,j];
end; k:=i; end;
end;
end.
В котором собственно должно находить сумму минимальных значений нечётных строк, он то вроде и находит но как-то неправильно.
Может кто-нибудь пнёт меня в правильную сторону.