function SumOdd(const a: array of real): Real;
//Возвращает сумму значений компонентов с нечётными индексами.
var i: integer;
begin
result:= 0;
for i:= Low(a) to high(a) do
if Odd(i) then result:= result + a[i]
end;
//-------------------------------------------------------------------------------------
var
S: real;//Сумма значений компонентов массива
A: Vector = (1, 5, -3, 2, 7);// массив инициированный начальными
//значениями
begin
//----------Вызов функции-------------------------------------------------------
S:= SumOdd(A);
writeln('Summa = ',S:6:2);
//----------Вызов функции-------------------------------------------------------
writeln('Summa = ',SumOdd(A):6:2);
readln;
end.
Написать и оттестировать функцию. Функция получает через параметр одномерный массив вещественных переменных и возвращает компонент массива с максимальным значением среди всех компонентов массива.
Для нахождения максимального по значению компонента массива необходимо перебрать все компоненты массива, начиная со второго, сравнивая их значения с текущим максимальным значением. Перед началом цикла в текущее максимальное значение необходимо установить значение первого компонента массива. Для просмотра значений компонентов массива организуем цикл. С этой целью воспользуемся управляющей структурой FORDO.
Блок-схема решения представлена ниже на рисунке.
Пример консольного приложения, в котором представлена функция, реализующая нахождение максимального значения среди значений компонентов одномерного массива вещественных переменных, представлен ниже.
program PMax;
{$APPTYPE CONSOLE}
uses
SysUtils;
Const
Columns = 5; //компонентов в массиве
Type
Index = 0.. Columns – 1;// тип индекса
Vector = array [Index] of real;// тип массива
//-------------------------------------------------------------------------------------
function Max(const a: array of real): Real;
//Возвращает максимальное значение среди значений компонентов массива.
var i: integer;
begin
result:= a[Low(a)];
for i:= Low(a) + 1 to high(a) do
if result < a[i] then result:= a[i]
end;
//------------------------------------------------------------------------------------
var
S: real;//Максимальное среди значений компонентов массива
A: Vector = (1, 5, -3, 2, 7);// массив инициированный начальными
//значениями
begin
//----------Вызов функции-------------------------------------------------------
S:= Max(A);
writeln('Max = ',S:6:2);
//----------Вызов функции-------------------------------------------------------
writeln('Max = ',Max(A):6:2);
readln;
end.
Написать и оттестировать процедуру. Процедура получает через параметр одномерный массив вещественных переменных. В полученном массиве процедура переставляет значения компонентов массива в обратном порядке. Вспомогательный массив не использовать.
Исходный массив |
Элемент |
A[0] |
A[1] |
A[2] |
A[3] |
A[4] |
Значение |
1 |
5 |
–3 |
2 |
7 |
|
Массив результатов |
Элемент |
A[0] |
A[1] |
A[2] |
A[3] |
A[4] |
Значение |
7 |
2 |
–3 |
5 |
1 |
Для перестановки значений компонентов массива в обратном порядке необходимо перебрать компоненты массива, начиная с первого и до среднего (от 0 до N div 2 – 1), исключая его, если он имеется, обменивая значениями компоненты массива с индексами I и (N – I – 1). Об-мениваются значениями компоненты слева и справа массива, отстоящие от центра на одинаковом расстоянии. В случае чётного числа компонентов в массиве обмениваются значениями все компоненты. В случае нечётного числа компонентов в массиве центральный компонент массива остаётся неизменным. Индексация компонентов массива от 0. Для просмотра значений компонентов массива воспользуемся управляющей структурой FORDO. Рисунок, иллюстрирующий алгоритм, представлен ниже.
Блок-схема решения представлена ниже на рисунке.
Консольное приложение с процедурой, реализующей перестановку значений компонентов одномерного массива вещественных переменных в обратном порядке, представлено ниже.
program PReorder;
{$APPTYPE CONSOLE}
uses
SysUtils;
Const
Columns = 5; //компонентов в массиве
Type
Index = 0.. Columns – 1;// тип индекса
Vector = array [Index] of real;// тип массива
//-------------------------------------------------------------------------------------
procedure swap(var a,b: real);
//Осуществляет обмен значениями a, b.
var t: real;
begin
t:= a;
a:= b;
b:= t;
end;
//-------------------------------------------------------------------------------------
procedure Reorder(var a: array of real);
//Осуществляет
перестановку значений компонентов массива
//в обратном порядке.
var
i,n: integer;
begin
n:= high(a) + 1;
for i:= 0 to n div 2 – 1 do
swap(a[i],a[n – i -1]);
end;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.