Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Implementation{ ниже прописываются сами процедуры и функции } //================================================== Procedure Vvod_Matr_iz_Tabl(StringGrid:TStringGrid; var n,m:integer; var Matr:TMatr); // ввод матрицы из StringGrid Var i, j: integer; Begin with StringGrid do begin n:=RowCount-1; // число строк m:=ColCount-1; // число столбцов for i:=1 to n do for j:=1 to m do Matr[i,j]:=StrToFloat(Cells[j,i]); end; end; //=================================================== Procedure Vyvod_Matr(n, m: integer; Matr:TMatr; Memo:TMemo); // вывод матрицы в Мемо Var i, j: integer; St: string; Begin St:='Введенная матрица:'+#13#10; for i:=1 to n do begin for j:=1 to m do St:= St + FloatToStr(Matr[i, j])+#9; St:= St + #13#10; end; Memo.Lines.Add(St); end; //=================================================== End.
Этот модуль компилируется отдельно, а затем подключается в разделе uses основной программы (см. Листинг 6.3). Листинг 6.3 unit Unit1;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, jpeg, ExtCtrls, Spin, MyUnit; // подключили модуль MyUnit
Type TForm1 = class (TForm) Label1: TLabel; Label2: TLabel; StringGrid1: TStringGrid; Button2: TButton; Memo1: TMemo; Button1: TButton; Label3: TLabel; Image1: TImage; SpinEdit1: TSpinEdit; SpinEdit2: TSpinEdit; Label4: TLabel; Label5: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure StringGrid1KeyPress(Sender: TObject; var Key: Char); procedure SpinEdit1Change(Sender: TObject); procedure SpinEdit2Change(Sender: TObject); Private { Private declarations } Public { Public declarations } end; Type TMatr = array [1..10,1..10] of real; // Объявление типа двухмерного // массива размером 10 x 10 Var Form1: TForm1; A: TMatr; // Глобальное объявление двухмерного массива n, m: integer;
Implementation
{$R *.dfm}
{ Здесь уже не надо прописывать процедуры, т.к. они есть в подключ. модуле MyUnit } //------------------------------------------------------------- procedure TForm1.FormCreate(Sender: TObject); // первоначальное формирование интерфейса программы var i, j: integer; Begin Memo1.Clear; SpinEdit1.Text:= '4'; SpinEdit2.Text:= '4'; With StringGrid1 do begin RowCount:=StrToInt(SpinEdit1.Text)+1; ColCount:=StrToInt(SpinEdit2.Text)+1; Cells[0,0]:= ' A'; for i:=1 to RowCount do Cells[0,i]:= ' i=' + IntToStr(i); for j:=1 to ColCount do Cells[j,0]:= ' j=' + IntToStr(j); end; End; //--------------------------------------------------------------- procedure TForm1.SpinEdit1Change(Sender: TObject); // изменение Числа строк в таблице var i:integer; Begin if SpinEdit1.Text='' then Exit; // подготовка таблицы по строкам With StringGrid1 do begin RowCount:=StrToInt(SpinEdit1.Text)+1; for i:=1 to RowCount do Cells[0,i]:= ' i=' + IntToStr(i); End; End; //-------------------------------------------------------- procedure TForm1.SpinEdit2Change(Sender: TObject); // изменение Числа столбцов в таблице var j: integer; Begin if SpinEdit2.Text='' then Exit; // подготовка таблицы по столбцам With StringGrid1 do begin ColCount:=StrToInt(SpinEdit2.Text)+1; for j:=1 to ColCount do StringGrid1.Cells[j,0]:= ' j=' + IntToStr(j); End; End; //-------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); // выполнить Var i, j, k, ke: integer; p, pe: real; s: string; Begin n:= StrToInt(SpinEdit1.Text); // Число строк в массиве m:= StrToInt(SpinEdit2.Text); // Число столбцов в массиве
{ Проверка на заполненность таблицы } for i:=1 to n do for j:=1 to m do if StringGrid1.Cells[j,i]='' then begin ShowMessage('Надо заполнить все ячейки таблицы!!!'); Exit; End;
{ Ввод матрицы А из таблицы StringGrid1 } Vvod_Matr_iz_Tabl(StringGrid1, n, m, A); // вызов процедуры, текст которой //находится в модуле MyUnit
{ Расчет } k:= 0; ke:=0; p:=0; pe:= 1; for i:= 1 to n do for j:= 1 to m do if A[i, j]>0 then begin k:= k+1; p:=p+A[i,j]; end Else if (A[i,j]<0) then begin ke:=ke+1; pe:= pe * A[i,j]; end;
Memo1.Clear; { Показаваем в Мемо1 введенную матрицу А } Vyvod_Matr(n, m, A, Memo1); // вызов процедуры, текст которой находится в MyUnit
{ показываем в Мемо1 результаты расчета } if k=0 then Memo1.Lines.Add('Положительных элементов нет!')
|