Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР_программирование.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
387.75 Кб
Скачать
    1. Разработка схемы интерфейса.

Создадим для нашего модуля форму (рис.3.2). На нее добавим:

  1. Три метки (label) – на первой напишем «число строк», а на второй – «число столбцов», на третьей – «сумма элементов в столбцах, не содержащих отрицательные элемен­ты».

  2. Два поля для ввода (Edit) – первый для ввода строк, второго – столбцов. В события Onchange для первого запишем процедуру «TForm1.Edit1Change», для второго – «TForm1.Edit2Change». Также в события onKeyPress запишем процедуры «edit1KeyPress» и «edit2KeyPress», для первого и второго полей соответственно, так как здесь нам нужны только цифры.

  3. Две табличные области (Stringgrid) – в первую запишем исходную матрицу, а вторую – результаты расчетов. В событие onKeyPress для первой запишем процедуру «StringGrid1KeyPress», так как нам нужны только цифры.

  4. Одну кнопку, в событие OnClick которой запишем процедуру «Schet».

Рис.3.2 Форма на этапе разработки.

    1. Листинг кода программы

unit Unit1;

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

StringGrid2: TStringGrid;

Button1: TButton;

Label3: TLabel;

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

m,n:integer;

a:array[1..20,1..20] of integer;

b:array[1..20] of integer;

Implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);

var i:integer;

begin

m:=strToInt(edit1.Text);

StringGrid1.RowCount:=m;

StringGrid1.Height:=24*m+15;

StringGrid1.Visible:=true;

StringGrid2.Top:=StringGrid1.Top+24*m+25;

for i:=0 to m-1 do StringGrid1.Cells[0,i]:='0';

end;

procedure TForm1.Edit2Change(Sender: TObject);

var i,j:integer;

begin

n:=strToInt(edit2.Text);

StringGrid1.ColCount:=n;

StringGrid2.ColCount:=n;

StringGrid1.Width:=64*n+10;

StringGrid2.Width:=StringGrid1.Width;

StringGrid1.Visible:=true;

for i:=0 to m-1 do

for j:=0 to n-1 do StringGrid1.Cells[j,i]:='0';

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',#8]) then key:=#0;

end;

procedure TForm1.Button1Click(Sender: TObject);

var i,j,k:integer;

begin

for i:=1 to m do

for j:=1 to n do

a[i,j]:=strToInT(stringgrid1.Cells[j-1,i-1]);

for i:=1 to m do b[i]:=0;

for j:=1 to n do

for i:=1 to m do

if a[i,j]=0 then b[i]:=1;

k:=0;

for i:=1 to n do

begin

if b[i]=0 then k:=k+1;

stringgrid2.Cells[i-1,0]:=InTTostr(b[i]);

end;

label3.Caption:='Количество ненулевых строк - '+IntToStr(k)+'.';

end;

end.