- •Лабораторная работа №1 Структура программы на языке Pascal и организация ввода-вывода данных
- •Var Form1: tForm1;
- •Var z: integer;
- •Лабораторная работа № 2
- •Var X,a,y:real;
- •Лабораторная работа № 3 Проект с несколькими формами
- •Form1 (Unit1)
- •Var Form1: tForm1; X,y,s,r,p:real;
- •Implementation
- •Form2 (Unit2)
- •Implementation
- •Лабораторная работа №4
- •Var X ,I: integer;
- •Inc (I);{следующий номер делителя}
- •Var m,n,nod,nok:word; I,k:word;
- •Лабораторная работа №5
- •Var I,p:integer;
- •Var a:array[size]of integer;
- •I,n,imax:size;
- •Var I:size;
- •Var n:integer;//количество строк в поле Memo1
- •Var I,p:integer;
- •Var a:array[size,size]of integer; m,n:size; max:integer;
- •Imax,jmax: size; I,j,k: integer;
- •Лабораторная работа №6
- •Var Str:string; otvet, I, n: integer;
- •Лабораторная работа №7
- •Var f: textfile; I: integer;
- •Var f: textfile; ch:string; I,s: integer;
- •Vozr,rost:integer;
- •Var st,r:string; rzap:sz; I:integer; f1:TextFile;
- •Лабораторная работа №8
- •Interface
- •Лабораторная работа №9
- •Var I,j,k:integer;
- •Var I,j:integer;
- •Var b:vec; n1,I,j,k:integer;
- •Приложение 1
- •Приложение 2
Лабораторная работа №9
Двумерные динамические массивы
Цель работы:
изучение типа данных “динамический массив”;
получение навыков программирования обработки одномерных и двумерных динамических массивов средствами Pascal;
освоение основных приемов для разработки приложения, использующего модуль не связанный с формой, с подпрограммами для использования из приложения.
Пример 9.1. Операции ввода и вывода двумерного массива с использованием компонент Edit, StringGrid
Дано: матрица размером . ( ; ). Сформировать вектор элементов, расположенных между min и max элементами матрицы.
Таблица имен переменных:
Имя |
Структура |
Тип |
Семантика |
m n k
a
b |
простая простая простая
одном. массив одном. массив |
целый целый целый
целый
целый
|
Количество строк матрицы Количество столбцов матрицы Количество элементов сформированного массива Исходная матрица
Сформированный массив из элементов матрицы, расположенных между min и max элементами матрицы |
Размещенные компоненты:
-
Компонент
Свойство
Значение
Label - Label13
Edit1 – Edit5
StringGrid
Caption
Caption
ColCount
RowCount
FixedCols
FixedRows
От “Формирование одномерного массива” до “Элементы матрицы, расположенные…”
Пусто
11(количество столбцов)
11(количество строк)
1(количество фикс. столбцов)
1( количество фикс. строк)
Вид формы с компонентами:
Отметим, что максимальные размеры матрицы:
m = 10 – количество строк; n = 10 – количество столбцов;
В таблице количество строк и столбцов на 1 больше, т.к. в таблице есть фиксированная часть.
Процедура обработки щелчка на кнопке “Ввод”
(формирование двумерного массива – вводом элементов из поля Edit3, перед процедурой необходимо разместить функцию GetSubstr в разделе Implementation)
procedure TForm1.Button1Click(Sender: TObject);
Var I,j,k:integer;
begin
m:=StrToInt(Edit1.text); n:=StrToInt(Edit2.text);
SetLength(a,m);
for i:=0 to m-1 do SetLength(a[i],n);{Ввод матрицы из Edit3}
k:=1;
for i:=0 to m-1 do
for j:=0 to n-1 do
begin a[i,j]:=StrToInt(GetSubStr(Edit3.text,k));
k:=k+1
end;end;
Процедура обработки щелчка на кнопке “Вывод”
(Вывод введенной матрицы в таблицу)
procedure TForm1.Button2Click(Sender: TObject);
Var I,j:integer;
begin
{Вывод номеров строк в 0-м столбце и столбцов в 0-й строке}
with StringGrid1 do
begin i:=0; //0-й столбец
for j:=1 to RowCount-1 do //вывести номера строк
Cells[i,j]:=IntToStr(j);
j:=0; //0-я строка
for i:=1 to ColCount-1 do //вывести номера столбцов
Cells[i,j]:=IntToStr(i);
end;
with StringGrid1 do {Вывод элементов матрицы в таблицу}
for i:=0 to m-1 do
for j:=0 to n-1 do Cells[j+1,i+1]:=IntToStr(a[i,j]);
end;
Процедура обработки щелчка на кнопке “Расчет”
(Развертывание матрицы в вектор, поиск максимального и минимального элемента этого вектора, а также индексов этих элементов, а затем формирование массива из тех элементов, которые располагаются между min и max элементами (или между max и min)).
procedure TForm1.Button3Click(Sender: TObject);