Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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('Положительных элементов нет!')

Date: 2015-06-08; view: 527; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию