Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЕШЕНИЕ ФУНКЦИОНАЛЬНЫХ И ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ.doc
Скачиваний:
34
Добавлен:
25.11.2018
Размер:
4.81 Mб
Скачать

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 предназначен для создания таблиц.

Данный компонент использует ряд свойств и методов:

  1. Сells[i,j] – двухмерный массив ячеек, каждая из которых содержит произвольный текст;

  2. ColСount – содержит количество колонок таблицы;

  3. RowCount - содержит количество рядов таблицы;

  4. FixedCouls – определяет количество колонок фиксированной зоны, заголовков столбцов;

  5. FixedRows – определяет количество рядов фиксированной зоны, заголовков строк;

  6. Optins.gotabs – свойство разрешающее перемещение между ячейками (если установлено значение true);

  7. 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

Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные суммам элементов строк.

17

Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные произведениям элементов строк.

18

Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные наименьшим значениям элементов строк.

19

Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные значениям средних арифметических элементов строк.

20

Дана действительная матрица размера mn. Вывести матрицу на экран. Определить числа b1,…,bm равные разностям наибольших и наименьших значений элементов строк.

21

Даны натуральное число n, действительная матрица размера n9. Вывести матрицу на экран. Найти средне арифметическое каждого из столбцов;

22

Даны целые числа а1, а2, а3. Получить целочисленную матрицу , для которой .

23

Даны действительные числа а, … ,а; b, … ,b. Получить действительную матрицу , для которой .

Продолжение таблицы 10

24

Дана действительная матрица 18n. Вывести матрицу на экран. Найти значение наибольшего по модулю элемента матрицы.

25

Получить - целочисленную матрицу для которой.

26

Дана действительная матрица размера mn. Вывести матрицу на экран. Найти сумму наибольших значений элементов её строк.

27

Дано натуральное число n. Выяснить сколько положительных элементов содержит матрица , если . Вывести матрицу на экран.

28

Дана действительная матрица nm, в которой не все элементы равны нулю. Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент.

29

Дана действительная квадратная матрица порядка 12. Заменить нулями все её элементы, расположенные на главной диагонали.

30

Дана действительная матрица размера 69. Вывести матрицу на экран. Найти среднее арифметическое наибольшего и наименьшего значений её элементов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]