Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
делфи.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
8.51 Mб
Скачать
  1. При запуске программы появляется следующее окно:

  1. После нажатия кнопки «пуск»:

Выводы: изучили средства отладки программ в среде DELPHI. Составили и отладили программу для циклического вычислительного процесса.

Лабораторная работа 4

Разработка приложения с использованием массивов

Постановка задачи:

Разработать приложение обработки и представления информации в табличной форме в сооветствии с индивидуальным заданием.

В задании скалярные переменные вводить с помощью компонента типа TEdit с соответствующим пояснением в виде компонента типа TLabel. Скалярный результат выводить в виде компонента TLabel. Массивы представлять на форме в виде компонентов TStringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов. Вычисления выполнять после нажатия кнопки типа TButton.

Задание: Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.

Текст программы:

unit Unit1;

Interface

uses

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

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

Memo1: TMemo;

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Label1: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Nmax = 20; // Максимальная размерность массива

type

TMas1 = array[1..Nmax, 1..Nmax] of Extended; // Объявление типа двумерного массива

var

Form1: TForm1;

A : TMas1; // Объявление двумерного массива

N, i, j : integer;

Implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add('Лаб. раб. №4');

N := 3; // Размерность массива

Edit1.Text:= IntToStr(N);

// Задание числа строк и столбцов

StringGrid1.ColCount := N + 1;

StringGrid1.RowCount := N + 1;

// Ввод в левую верхнюю ячейку таблицы названия массива

StringGrid1.Cells[0, 0] := 'Массив';

// Заполнение верхнего и левого столбцов поясняющими подписями

for i:=1 to N do

begin

StringGrid1.Cells[0, i] := 'i='+ IntToStr(i);

StringGrid1.Cells[i, 0] := 'j='+ IntToStr(i);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

N := StrToInt(Edit1.Text);

// Задание числа строк и столбцов в таблицах

StringGrid1.ColCount := N + 1;

StringGrid1.RowCount := N + 1;

// Заполнение верхнего и левого столбцов поясняющими подписями

for i:=1 to N do

begin

StringGrid1.Cells[0, i] := 'i=' + IntToStr(i);

StringGrid1.Cells[i, 0] := 'j=' + IntToStr(i);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

f : Boolean;

begin

// Заполнение массива A элементами из таблицы StringGrid1

for i:=1 to N do

for j:=1 to N do

A[i, j] := StrToFloat(StringGrid1.Cells[j, i]);

f:=true;

for i:=1 to n do

begin

for j:=1 to n-i do

if a[i,j]<>a[n-i+1,n-j+1] then

begin

f:=false;

break;

end;

if not f then break;

end;

if f then Memo1.Lines.Add('Матрица - симметрична')

else Memo1.Lines.Add('Матрица - не симметрична');

end;

end.

Результат работы программы: