- •Лабораторная работа
- •Var a, b : vector_1;
- •Var a, b : array[1..5] of Integer;
- •Var {Описание переменных}
- •I,j : Integer;
- •I,j : Integer;
- •2 Строка: наибольший элемент в 7 столбце равен 0.696
- •4 Строка: наибольший элемент в 4 столбце равен 1.989
- •6 Строка: наибольший элемент в 7 столбце равен 0.960
- •I,j,k:Integer;
- •Задание 2 . Составить программы для решения двух задач.
Var a, b : vector_1;
Begin a : = b;
if a = b then WriteLn(‘ массивы a и b совпадают ‘) ;
if a <> b then WriteLn (‘массивы a и b не совпадают ‘);
С другой стороны, если задать следующие массивы:
Var a, b : array[1..5] of Integer;
C : array[1..5] of Integer;
то допустим следующий оператор: A := B;
Но оператор C := A; недопустим, несмотря на то, что структуры массивов C и A совпадают, так как данные массивы неидентичных типов.
Начальные значения элементов массива могут быть заданы внутри программы или при описании массива. Во втором случае массив описывается в разделе Const, а элементы перечисляются через запятые и заключаются в скобки. Количество начальных значений должно строго соответствовать количеству элементов массива. Например:
Type
Dim2 = array[1..2] of integer ;
Dim432 = array[1..4,1..3] of Dim2 ;
Const
a : Dim2 = (0,3) ;
b : Dim432 = (((0,1), (0,4), (5,-7)),
((-2,1), (6,-3), (8,2)),
((3,0), (0,0), (0,4)),
((0,1), (2,4), (-1,2))) ;
Почти все операции с массивами требуют использования операторов цикла. К наиболее распространённым операциям относятся суммирование элементов массива и поиск наибольших (наименьших) значений элементов.
Вывод на печать групп элементов одномерного (двумерного) массива чаще всего осуществляется в виде строки (таблицы). При выводе отдельных элементов указывают их индексы. Например:
i := 3 ; j :=2 ; k := 5 ;
a[i,j,k] := 7.5 ;
WriteLn( ‘a[‘,i:1,’,’,j:1,’,’,k:1,’]=‘,a[i,j,k]:3:1) ;
В результате на экран будет выведено a[3,2,5] = 7.5 .
Задание 1. Выполнить примеры 1-4. Тексты программ сохранять в файлах под именами lab4_pr1.pas - lab4_pr4.pas
Пример 1
Создать два одномерных массива по правилам и образовать из них двумерный массив по правилу , где ; .
Решение.
Анализ задачи.
Здесь имеем дело с двойным циклом. Пусть внешний цикл будет по параметру , внутренний цикл по параметру . В теле цикла сначала вычисляем элементы одномерного массива , где ; затем вычисляем элементы одномерного массива , где ; наконец, вычисляем элементы двумерного массива , где , ; .
Тест для отладки программы.
, ,
;
, ,
;
, ,
.
Блок-схема:
G
Программа:
program Vector_Matrix;
Var {Описание переменных}
A : array[1..6] of real ;
B : array[3..7] of real ;
C : array[1..6,3..7] of real ;
I,j : Integer;
{ начало основного блока }
BEGIN
for i:= 1 to 6 do
for j := 3 to 7 do
begin
a[i] := exp(i*ln(2)) ; {Вычисление элементов массива A}
b[j] := sqr(j) ; {Вычисление элементов массива B}
c[i,j] := a[i] + b[j] ; {Вычисление элементов массива C}
end;
{Выводим массив A}
Write Ln('Массив A') ; for i:= 1 to 6 do
Write(a[i]:4:1,' ');
WriteLn ; {перевод курсора на следующую строку}
{Выводим массив B}
WriteLn('Массив B') ;
for j:= 3 to 7 do
Write(b[j]:4:1,' ') ;
WriteLn ; {перевод курсора на следующую строку}
{Выводим массив C}
WriteLn('Массив C') ;
for i:= 1 to 6 do
begin
for j := 3 to 7 do
Write(c[i,j]:5:1,' ') ;
WriteLn ; {перевод курсора на следующую строку}
end;
End.
5. Вид печати:
Массив A
2.0 4.0 8.0 16.0 32.0 64.0
Массив B
9.0 16.0 25.0 36.0 49.0
Массив C
11.0 18.0 27.0 38.0 51.0
13.0 20.0 29.0 40.0 53.0
17.0 24.0 33.0 44.0 57.0
25.0 32.0 41.0 52.0 65.0
41.0 48.0 57.0 68.0 81.0
73.0 80.0 89.0 100.0 113.0
Пример 2. Создать двумерный массив , где ; по правилу . Найти сумму наибольших элементов строк матрицы с четными номерами. Вывести на печать саму матрицу, номера строк, в которых производился поиск наибольших элементов, сами наибольшие элементы и окончательный ответ.
Решение.
Анализ задачи.
Обозначим: Max – наибольший элемент в строке с четным номером, N_Max – номер столбца, в котором найден наибольший элемент, sum – сумма наибольших элементов строк матрицы с четными номерами. Для проверки чётности будем использовать функцию Odd(k), которая возвращает True, если k – нечётное число и False, если k – чётное число.
Тест для отладки программы.
;
; ;
; ;
; ;
; .
Наибольший элемент будет .
3. Блок-схема:
4. Программа:
program Matr;
TYPE
Matrix=array [2..7,1..9] of real;
VAR
a : Matrix;
sum, Max : Real;
N_Max : Integer;