Разработать приложение обработки и представления информации в табличной форме в сооветствии с индивидуальным заданием.
В задании скалярные переменные вводить с помощью компонента типа TEdit с соответствующим пояснением в виде компонента типа TLabel. Скалярный результат выводить в виде компонента TLabel. Массивы представлять на форме в виде компонентов TStringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов. Вычисления выполнять после нажатия кнопки типа TButton.
Задание:Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.
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.
Результат работы программы:
1. При запуске программы появляется следующее окно:
После заполнения матрицы произвольными значениями, при которых – 2. матрица не симметрична относительно побочной диагонали, и нажатия кнопки «Вычислить»:
Выводы: изучили свойства компонента TStringGrid. Написали программу с использованием массивов.