Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Пример написания программы с использованием процедурЗадание: Двухмерный массив (матрица) вещественных чисел A, размером NxM, вводится с клавиатуры (компонент TStringGrid). Найти количество положительных элементов массива и их сумму, а также количество отрицательных элементов массива и их произведение (см. пример 4.5). Оформить ввод двумерного массива из TStringGrid и его вывод в ТМемо процедурами. Интерфейс программы будет таким же, что и примере 4.5, а текст программы с процедурами приведен на Листинге 6.1. Листинг 6.1 unit Unit1;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, jpeg, ExtCtrls, Spin;
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х10 Var Form1: TForm1; A: TMatr; // Глобальное объявление матрицы n, m: integer;
Implementation
{$R *.dfm} //============================================================ 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; //============================================================ 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 { Проверка на заполненность таблицы } With StringGrid1 do begin for i:= 1 to RowCount-1 do for j:= 1 to ColCount-1 do if Cells[j, i] = '' then begin ShowMessage('Надо заполнить все ячейки таблицы!!!'); Exit; End; End;
{ Ввод матрицы А из таблицы StringGrid1 } Vvod_Matr_iz_Tabl(StringGrid1, n, m, A); // вызов процедуры
{ Расчет } 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); // вызов процедуры
{ показываем в Мемо1 результаты расчета } if k=0 then Memo1.Lines.Add('Положительных элементов нет!')
|