4 Написання тексту програми
Вигляд працюючої програми показано на рисунку 4.1. Для перевірки працездатності програми вводимо значення елементів масивів, що задані у алгоритмі виконання програми (розділ 2). Для виконання перетворень над матрицями необхідно натиснути на відповідні кнопки. Також у програмі необхідно було передбачити перевірку чи заповнені всі комірки матриць, щоб уникнути порожніх значень елементів матриці.
Рисунок 4.1 – Вигляд працюючої програми з результатами розрахунків
Наведемо блок – схеми алгоритмів проекту для пошуку максимального елемента (рис. 4.2), сумування непарних рядків (рис. 4.3), головної програми (рис. 4.4).
Наведемо текст розробленої програми з коментарями лістинг 4.1.
Лістинг 4.1. Текст програми:
unit Masuv;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Label1: TLabel;
Label2: TLabel;
StringGrid5: TStringGrid;
Label3: TLabel;
GroupBox1: TGroupBox;
Button3: TButton;
Button2: TButton;
Button1: TButton;
Edit1: TEdit;
StringGrid3: TStringGrid;
Label4: TLabel;
Label5: TLabel;
StringGrid4: TStringGrid;
GroupBox2: TGroupBox;
Button4: TButton;
Button5: TButton;
Edit2: TEdit;
Label6: TLabel;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// опис типів та глобальних елементів
Type matrA =array [1..3,1..4] of integer;
matrB =array [1..4,1..3] of integer;
matrC =array [1..4,1..3] of integer;
var i,j, sum:integer;
B1, B2: boolean;
// процедура знаходження максимального елементу та його координат
procedure max_el(C:matrC; var max,mi,mj:integer);
begin
max:=C[1,1]; mi:=1; mj:=1;
for i:=1 to 4 do
for j:=1 to 3 do
if C[i,j]>max then
begin max:=C[i,j];
mi:=i; mj:=j;
end;
end;
// процедура обчислення суми елементів непарних рядків матриці С
procedure Suma_NR (C:matrC; var sum:integer);
begin
sum:=0;
for i:=1 to 4 do
begin
for j:=1 to 3 do
if (j=1) or (j=3) then
sum:=sum+C[i,j]
else
sum:=sum;
end;
end;
// процедура відгуку на утворення форми проекту
//( виведення заголовків рядків та стовпчиків)
procedure TForm1.FormCreate(Sender: TObject);
begin
B1:=false;
B2:= false;
// Створення надписів для матриці А
for i:=1 to 4 do
StringGrid1.cells[0,i]:=IntToStr(i)+'-й рядок';
for j:=1 to 3 do
StringGrid1.cells[j,0]:=IntToStr(j)+'-й стовпчик';
// Створення надписів для матриці B
for i:=1 to 3 do
StringGrid2.cells[0,i]:=IntToStr(i)+'-й рядок';
for j:=1 to 4 do
StringGrid2.cells[j,0]:=IntToStr(j)+'-й стовпчик';
// Створення надписів для перетвореної матриці А
for i:=1 to 3 do
StringGrid3.cells[0,i]:=IntToStr(i)+'-й рядок';
for j:=1 to 4 do
StringGrid3.cells[j,0]:=IntToStr(j)+'-й стовпчик';
// Створення надписів для перетвореної матриці В
for i:=1 to 3 do
StringGrid4.cells[0,i]:=IntToStr(i)+'-й рядок';
for j:=1 to 4 do
StringGrid4.cells[j,0]:=IntToStr(j)+'-й стовпчик';
// Створення надписів для результуючої матриці С
for i:=1 to 3 do
StringGrid5.cells[0,i]:=IntToStr(i)+'-й рядок';
for j:=1 to 4 do
StringGrid5.cells[j,0]:=IntToStr(j)+'-й стовпчик';
end;
//вихід з програми
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
// процедура очищення компонент форми
procedure TForm1.Button2Click(Sender: TObject);
begin
//очищення А
for i:=1 to 4 do
for j:=1 to 3 do
begin
StringGrid1.cells[j,i]:='';
StringGrid3.cells[j,i]:='';
end;
//очищення B
for i:=1 to 3 do
for j:=1 to 4 do
begin
StringGrid2.cells[j,i]:='';
StringGrid4.cells[j,i]:='';
end;
//очищення C
for i:=1 to 3 do
for j:=1 to 4 do
StringGrid5.cells[j,i]:='';
Edit1.Clear;
Edit2.Clear;
end;
// процедура відгуку на натиснення кнопки "Розрахунок матриці С"
procedure TForm1.Button1Click(Sender: TObject);
var B:matrB; A:matrA; C:matrC; max,imax,jmax:integer;
begin
//перевірка, чи виконані перетворення матриць А та В
if (B1=false) and (B2=false) then
exit;
//Вивід матриці В до квадрату
for j:=1 to 3 do
for i:=1 to 4 do
begin
A[i,j]:=strtoint(StringGrid3.cells[i,j]);
B[i,j]:=strtoint(StringGrid4.cells[i,j]);
C[i,j]:=A[i,j]+B[i,j];
StringGrid5.cells[i,j]:=inttostr(C[i,j]);
end;
// виклик підпрограми знаходження максимального елементу
max_el(C,max,imax,jmax);
// виведення максимального елементу та його координат
Edit1.Text:='Мах='+IntToStr(max)+' рядок='+IntToStr(jmax)+
' стовпчик='+IntToStr(imax);
// виклик підпрограми обчислення суми елементів непарних рядків матриці С
Suma_NR (C,sum);
// виведення суми елементів непарних рядків
Edit2.Text:='Сума елементів ='+IntToStr(sum);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
B1:=true;
//Вивід транспонованої матриці А
for j:=1 to 3 do
for i:=1 to 4 do
StringGrid3.cells[i,j]:=stringGrid1.Cells[j,i];
end;
procedure TForm1.Button5Click(Sender: TObject);
var F:matrB;
begin
B2:=true;
//Вивід матриці В до квадрату
for j:=1 to 3 do
for i:=1 to 4 do
begin
f[i,j]:=strtoint(StringGrid2.cells[i,j]);
f[i,j]:=f[i,j]*f[i,j];
StringGrid4.cells[i,j]:=inttostr(f[i,j]);
end;
end;
end.
