Цель работы: Разработка алгоритмов и написание приложений циклической структуры с использованием подпрограмм и одномерных массивов.
Сформировать структуру статического одномерного массива рекомендуется в разделе определения типов type, а затемописать переменную соответствующего типа в разделе описания переменных var. Например,
Type tVect = array [1..10] of real48;
Var Ar: tVect;
Возможно выполнить описание массива с использованием только раздела var. Например, Var Ar: array [1..10] of real48;
В результате статически выделяется память для массива из 10 элементов типаreal48, которая освобождается при завершении работы блока, где массив описан. Для обращения к элементу массива применяется операция индексации Ar[i] (в данном случае индекс может быть константой, переменной или целочисленным выражением в интервале от 1 до 10). В качестве индекса можно использовать любой порядковый тип. Над элементами массива можно выполнять все операции допустимые для заявленного типа.
Пример 11. Ввести целочисленный массив из n чисел и определить сумму максимальных значений. Предполагается, что элементы в массиве повторяются. Для ввода размерности массива и его элементов оформить отдельную процедуру.
Program Example_11;
{$APPTYPE CONSOLE}
Uses SysUtils;
type tVect = array[1..100] of integer;
Procedure InputAr(Var Ar:tVect; Var n:integer);
Var i:integer;
Begin
write('Введите размер массива: '); readln(n);
writeln('Введите элементы массива: ');
for i:=1 to n do
read(Ar[i]);
Readln
end; {Input}
Var n,i,max,sum:integer;
Ar: tVect;
Begin
InputAr(Ar,n);
// поиск максимальных и их суммирование
max:=Ar[1]; sum:=Ar[1];
for i:=2 to n do
if Ar[i]>max then
begin
max:=Ar[i];
sum:=Ar[i]
end
else if Ar[i]=max then
sum:=sum+Ar[i];
writeln('Сумма максимальных = ',sum);
Readln
End.
Результат работы приложения представлен в окне вывода (рис.5):

Рис.5. Результат работы приложения (пример 11)
Стандартная процедура Exit завершает работу своего программного блока. Вызов Exit внутри процедуры или функции завершает их работу. Вызов Еxit в основном блоке приводит к завершению всего приложения.
Пример 12. В результате выполнения фрагмента кода
Procedure OutPut;
Begin
writeln ('22222'); Exit; writeln ('33333')
End; { OutPut}
Begin
writeln ('11111'); OutPut; Exit; writeln ('STOP'); … будут выведены следующие строки: 11111
22222
Стандартные процедуры Continue и Break
Continue - вызывает передачу управления следующей циклической итерации игнорируя расположенные ниже операторы, составляющие тело цикла.
Break – досрочно завершает цикл любого типа (самый внутренний цикл из охватывающих этот оператор).
Пример 13. В одномерном массиве определить первый отрицательный элемент и его номер. Если отрицательных элементов в массиве нет, вывести соответствующее сообщение.
Program Example_13;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const N = 5;
Var vect: array [1..N] of integer;
i: byte;
mesage: boolean; { флаг }
Begin
writeln ('Введите ', N, ' элементов вектора:');
for i:= 1 to N do
begin
write ('vect[',i,'] = ');
readln (vect[i])
end;
mesage:= False; // число не найдено
for i:= 1 to N do
begin
if vect[i] >= 0 then Continue; // переход на следующую итерацию
writeln (' Первое отрицательное число = ',vect[i],' с номером ',i);
mesage:= True; // найдено отрицательное число
Break // досрочный выход из цикла
end;
if not mesage then writeln (' Отрицательных чисел нет!!!');
readln
E nd.
Результаты работы приложения представлены в окнах вывода (рис.6,рис.7):

Рис.6. Результат работы приложения (пример 13)

Рис.7. Результат работы приложения (пример 13)
Варианты заданий
Для решения задачи следует применить статическое выделение памяти для массивов. Создать три процедуры, обеспечивающие:
- ввод количества элементов и самих элементов массива (с клавиатуры);
- обработки массива в соответствии с заданием;
- вывод массива на экран.
Другие полученные результаты вывести в главном блоке. В случае невозможности определения требуемых значений следует вывести соответствующее сообщение. Предполагается, что значения элементов в массиве могут повторяться.
1. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму положительных элементов с нечетными номерами и максимальное произведение положительных подряд идущих элементов. Сформировать новый массив, состоящий из отрицательных элементов исходного массива.
2. В одномерном массиве, состоящем из N целых чисел, вычислить сумму положительных четных элементов и минимальное произведение отрицательных подряд идущих элементов. Сформировать новый массив, состоящий из минимальных элементов исходного массива.
3. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму максимальных элементов с четными номерами и максимальное произведение отрицательных подряд идущих элементов. Сформировать новый массив, состоящий из элементов исходного массива, равных первому элементу.
4. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму минимальных элементов с нечетными номерами и максимальное произведение трех соседних элементов. Сформировать новый массив, состоящий из элементов исходного массива, равных предпоследнему элементу.
5. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму отрицательных элементов с четными номерами и максимальное произведение трех соседних элементов. Сформировать новый массив, состоящий из элементов исходного массива, равных предпоследнему элементу.
6. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму положительных элементов с нечетными номерами и минимальную сумму трех соседних элементов. Сформировать новый массив, состоящий из элементов исходного массива, равных предпоследнему элементу.
7. В одномерном массиве из N целых чисел вычислить сумму минимальных элементов равных максимальному элементу и максимальное произведение двух равноотстоящих от центра элементов. Сформировать новый массив, состоящий из элементов исходного массива равных среднеарифметическому значению максимального и минимального элементов этого массива.
8. В одномерном массиве из N целых чисел вычислить среднее геометрическое всех положительных элементов массива и сумму положительных элементов массива, расположенных после второго максимального элемента. Сформировать новый массив, состоящий из последних элементов исходного массива, сумма которых равна сумме максимальных и минимальных элементов.
9. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива с номерами, кратными заданному целому числу и сумму нечетных элементов массива, расположенных вторым минимальным и первым максимальным элементами. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены первый максимальный и последний минимальный элементы.
10. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива, расположенных до последнего максимального элемента и сумму четных элементов массива, расположенных между первым и вторым минимальными элементами. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены первый минимальный и последний минимальный элементы.
11. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива, расположенных между минимальным и максимальным элементами и сумму элементов массива, расположенных до последнего минимального элементами. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены все минимальные элементы.
12. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива, расположенных между первым и последним минимальными элементами и сумму нечетных элементов массива, расположенных до последнего максимального элемента. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены все нулевые элементы.
13. В одномерном вещественном массиве из N чисел вычислить сумму всех положительных элементов массива, расположенных между первым и последним максимальными элементами и сумму элементов массива, расположенных до предпоследнего минимального элемента. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены все отрицательные элементы.
14. В одномерном массиве, состоящем из N вещественных чисел, вычислить: сумму положительных элементов с четными номерами и максимальное произведение знакочередующихся двух соседних элементов. Сформировать новый массив, состоящий из положительных элементов исходного массива, расположенных после максимального элемента.
15. В одномерном массиве, состоящем из N целых чисел, вычислить сумму положительных нечетных элементов и максимальную сумму подряд идущих отрицательных элементов. Сформировать новый массив из элементов, расположенных между первым и последним минимальными элементами исходного массива.
16. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму минимальных элементов с нечетными номерами и минимальное произведение отрицательных подряд идущих элементов. Сформировать новый массив, состоящий из элементов исходного массива, находящихся между максимальным и предпоследним элементами.
17. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму максимальных элементов массива и максимальное произведение подряд идущих положительных элементов массива. Сформировать новый массив, состоящий из элементов исходного массива, находящихся между минимальным и последним положительным элементами массива.
18. В одномерном массиве, состоящем из N вещественных чисел, вычислить: сумму положительных элементов с нечетными номерами и максимальную сумму трех соседних знакочередующихся элементов. Сформировать новый массив, состоящий из элементов исходного массива, находящихся между максимальным и первым положительным элементами массива.
19. В одномерном массиве, состоящем из N вещественных чисел, вычислить сумму элементов с четными номерами, которые больше заданного числа M и минимальную сумму двух элементов, равноотстоящих от середины массива. Сформировать новый массив, состоящий из элементов исходного массива, находящихся между среднеарифметическим и максимальным значениями элементов.
20. В одномерном массиве из N целых чисел вычислить сумму минимальных элементов, находящихся на нечетных местах и максимальную сумму двух равноотстоящих от центра элементов и их номера. Сформировать новый массив, состоящий из элементов исходного массива равных среднеарифметическому значению максимального и минимального элементов этого массива.
21. В одномерном массиве из N целых чисел вычислить среднее геометрическое всех положительных элементов массива и сумму положительных элементов массива, расположенных после второго максимального элемента. Сформировать новый массив, состоящий из начальных элементов исходного массива, сумма которых равна сумме максимальных и минимальных элементов.
22. В одномерном массиве из N целых чисел вычислить сумму элементов массива, кратных заданному целому числу и сумму нечетных элементов массива, расположенных между последним минимальным и вторым максимальным элементами. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены максимальные и первый минимальный элементы.
23. В одномерном массиве из N целых чисел вычислить сумму элементов массива, расположенных до первого максимального элемента и сумму нечетных элементов массива, расположенных между вторым и последним минимальными элементами. Сформировать новый массив, состоящий из элементов исходного массива, из которого удален последний максимальный элемент.
24. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива, расположенных между вторым четным и максимальным элементами и сумму элементов массива, расположенных до первого нечетного отрицательного элемента. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены все отрицательные элементы.
25. В одномерном массиве из N целых чисел вычислить сумму всех положительных элементов массива, расположенных между первым нечетным и последним максимальным элементами и сумму четных элементов массива, расположенных после последнего максимального элемента. Сформировать новый массив, состоящий из элементов исходного массива, из которого удалены все элементы, кратные заданному числу.






