- •Содержание
- •Введение
- •1 Основные компоненты Delphi
- •1.1 Знакомство с интегрированной средой программирования Delphi
- •1.1.1 Главное окно
- •1.1.2 Окно формы
- •1.1.4 Окно кода
- •1.1.5 Создание простого приложения
- •1.2 Программирование алгоритмов линейных структур путем создания простейших приложений в среде Delphi
- •1.2.1 Раздел описания процедур
- •1.2.2 Раздел меток
- •1.2.3 Раздел констант
- •1.2.4 Раздел типов
- •1.2.5 Раздел переменных
- •1.2.6 Раздел операторов
- •1.2.7 Реализация алгоритмов линейной структуры
- •1.2.8 Математические вычисления в языке Object Pascal
- •1.3 Условный оператор
- •1.4 Цикл с предусловием
- •1.5 Цикл с параметром
- •1.6 Цикл с постусловием
- •1.7 Обработка одномерных массивов
- •1.8 Обработка двумерных массивов
- •1.9 Табулирование функции двух переменных
- •1.10 Процедуры и функции
- •2 Общие сведения о программе MathCad
- •2.1 Знакомство с интегрированной средой MathCad
- •2.1.1 Окно программы MathCad
- •2.1.2 Алфавит системы MathCad
- •2.2 Построение графика функции
- •2.3 Решение рациональных уравнений
- •2.4 Решение системы линейных алгебраических уравнений
- •2.5 Решение нелинейных уравнений
- •2.6 Решение систем нелинейных уравнений
- •2.7 Решение дифференциальных уравнений
- •Список использованных источников
1.8 Обработка двумерных массивов
Цель: Умение использовать двумерные массивы.
Описание массива может быть дано разными способами.
В первом способе это делается в разделе описания переменных. При этом необходимо указать: имя массива, границы изменения индексов, тип элементов массива.
Таким образом, вся информация о массиве приводится сразу.
Var a: array[1..2,1..3] of real;
Здесь объявляется двумерный массив с именем а, состоящий из шести элементов вещественного типа. В квадратных скобках указываются границы изменения каждого индекса, разделенные запятой.
В данном случае первый индекс принимает значения 1 или 2, а второй изменяется от 1 до 3.
При втором способе описания определяется новый тип данных, представляющих собой многомерный массив с заданными границами изменения индексов, а затем описываются переменные этого типа.
Например,
Type matrix = array[1..5,1..5] of integer;
Var a,b: matrix;
В этом примере определяются данные типа matrix (это массивы, состоящие из пяти строк и пяти столбцов целых чисел) и вводятся две переменные a и b этого типа.
Задание1:
Даны натуральное число n,
действительная матрица
.
Получить последовательность элементов
главной диагонали а11,
а22,…,
аnn.
Технология выполнения задания
Постановка задачи: Создать приложение для вывода последовательности элементов главной диагонали а11, а22,…, аnn, данной матрицы.
Математическая
модель представляется так: исходные
данные – n,,
, результат – а11,
а22,
.. аnn.
Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 18.
Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose. Для вывода двумерного массива используют компонент StringGrid1, находящийся на вкладке Standart. Компонент StringGrid1 предназначен для создания таблиц.
Данный компонент использует ряд свойств и методов:
-
Сells[i,j] – двухмерный массив ячеек, каждая из которых содержит произвольный текст;
-
ColСount – содержит количество колонок таблицы;
-
RowCount - содержит количество рядов таблицы;
-
FixedCouls – определяет количество колонок фиксированной зоны, заголовков столбцов;
-
FixedRows – определяет количество рядов фиксированной зоны, заголовков строк;
-
Optins.gotabs – свойство разрешающее перемещение между ячейками (если установлено значение true);
-
Options.always.show.editing – свойство разрешающее редактирование таблицы (если установлено значение true);



Рисунок 18 - Образец размещения компонент на форме
Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 1 эта часть выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
const n=2; m=3;
var a:array[1..n,1..m] of integer;
s:string; i,j,b,min: integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
s:=inputbox('введите','a'+IntToStr(i)+IntToStr(j),'0');
a[i,j]:=StrToInt(s);
if i=j then
ListBox1.Items.Add('a['+IntToStr(i)+','+IntToStr(j)+']='+IntToStr(a[i,j]));
end;
StringGrid1.ColCount:=n+1;
StringGrid1.RowCount:=m+1;
for i:=0 to n+1 do
for j:=0 to m+1 do
StringGrid1.Cells[i,j]:='('+IntToStr(i)+';'+IntToStr(j)+')';
for i:=1 to n+1 do
for j:=1 to m+1 do
StringGrid1.Cells[i,j]:=IntToStr(a[i,j]);
end;
Задание
2: Даны
натуральные натуральное число n,
действительная матрица размера n
.
Вывести матрицу на экран. Найти среднее
арифметическое каждого из столбцов.
Технология выполнения задания
Постановка
задачи: Математическая модель
представляется так: исходные данные –
n,
, результат – а11,
а22,
.. аnn.
Алгоритм решения задачи: Запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента.
Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.
Установите в свойстве ColСount значение 2, RowCount – 3, Fixed-Couls значение 0, FixedRows – 0, optins.gotabs –значение true, Options.always.show.editing –значение true;
Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 2 эта часть выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
const n=2; m=3;
var a: array[1..n,1..m] of integer;
s:string; i,jsum: integer; sr: real;
begin
for i:=0 to stringgrid1.rowcount-1
for j:=0 to stringgrid1.colcount-1
a[i+1,j+1]:=strtoint(stringgrid1.cells[i,j]);
for j:=1 to m do
begin
sr :=0;
sum:=0;
for i:=1 to n do
sum:=sum+ a[i,j];
sr:=sum/n;
ListBox1.Items.Add(FloatToStr(sr));
end;
Таблица 10 - Индивидуальные варианты лабораторной работы №8
|
№ В |
Варианты индивидуальных заданий |
|
|
1 |
Решить систему линейных уравнений с верхней треугольной матрицей
|
|
|
2 |
Дана квадратная матрица А пятого порядка. Найти А2. |
|
|
3 |
Определить, является ли заданная квадратная матрица пятого порядка, составленная из целых чисел, симметричной относительно главной диагонали. |
|
Продолжение таблицы 10
|
4 |
Вычислить
норму квадратной матрицы А пятого
порядка по формуле
|
|
5 |
Вычислить сумму всех элементов квадратной матрицы пятого порядка, лежащих не ниже главной диагонали. |
|
6 |
Вычислить произведение матрицы А на вектор b. Элементы результирующего вектора c=A*b определяются следующим образом:
|
|
7 |
Вычислить элементы матрицы С, являющейся произведением нижней треугольной матрицы пятого порядка на верхнюю треугольную матрицу того же порядка. |
|
8 |
Вычислить элементы матрицы С, являющейся суммой нижней треугольной матрицы пятого порядка и верхней треугольной матрицы того же порядка. |
|
9 |
Проверить, является ли исходная матрица, составленная из целых чисел, нижней треугольной. Напечатать соответствующее сообщение. |
|
10 |
Определить среднее арифметическое отдельно от всех положительных и всех отрицательных элементов матрицы А. |
|
11 |
Найти максимальный по модулю элемент матрицы и номер строки и столбца, в котором он находится. |
|
12 |
Дана несимметричная прямоугольная матрица. Сформировать транспонированную к ней матрицу.
|
|
13 |
Вычислить суммы элементов каждой строки матрицы В(5×4), определить наименьшее значение среди этих сумм и номер соответствующей строки. |
Продолжение таблицы 10
|
14 |
Осуществить в исходной матрице Y пятого порядка перестановку элементов, несимметричных относительно главной диагонали. |
|
15 |
Переписать первые элементы каждой строки матрицы Z(4×5), большие заданной величины с, в вектор b(4). Если в строке нет такого элемента, то в вектор b записать 0. |
|
16 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные суммам элементов строк. |
|
17 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные произведениям элементов строк. |
|
18 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные наименьшим значениям элементов строк. |
|
19 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные значениям средних арифметических элементов строк. |
|
20 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные разностям наибольших и наименьших значений элементов строк. |
|
21 |
Даны натуральное число n, действительная матрица размера n9. Вывести матрицу на экран. Найти средне арифметическое каждого из столбцов; |
|
22 |
Даны
целые числа а1,
а2,
а3.
Получить целочисленную матрицу
|
|
23 |
Даны
действительные числа а, … ,а; b,
… ,b.
Получить действительную матрицу
|
Продолжение таблицы 10
|
24 |
Дана действительная матрица 18n. Вывести матрицу на экран. Найти значение наибольшего по модулю элемента матрицы. |
|
25 |
Получить
|
|
26 |
Дана действительная матрица размера mn. Вывести матрицу на экран. Найти сумму наибольших значений элементов её строк. |
|
27 |
Дано
натуральное число n.
Выяснить сколько положительных
элементов содержит матрица
|
|
28 |
Дана действительная матрица nm, в которой не все элементы равны нулю. Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент. |
|
29 |
Дана действительная квадратная матрица порядка 12. Заменить нулями все её элементы, расположенные на главной диагонали. |
|
30 |
Дана действительная матрица размера 69. Вывести матрицу на экран. Найти среднее арифметическое наибольшего и наименьшего значений её элементов. |

