Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rozdil_3_5.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
245 Кб
Скачать
☆

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]