Текст задания
Задана последовательность значений элементов некоторого массива до и после преобразования по некоторому правилу. Определите алгоритм преобразования и напишите программу, которая:
- формирует массив из заданного количества случайных целых чисел в заданном диапазоне и выводит элементы массива на экран;
- по определенному вами алгоритму преобразовывает этот массив и выводит на экран элементы преобразованного массива.
- производит заданные вычисления и выводит результат на экран.
Указания:
- преобразование массива оформить в виде процедуры;
- заданные вычисления оформить в виде функции;
- все выводы на экран осуществлять в основной программе.
Вариант №1 Массив B = (3, –4, 7, 2, 9, –7, 0) преобразован к виду B = (–6, 0, –14, –4, –18, 0, 0). Размер массива B - 15 элементов из диапазона [–14,14]. Вычислить произведение нечетных элементов преобразованного массива.
Исходный код программы
uses crt; {подключение модуля CRT, чтобы можно было использовать содержащиеся в нем стандартные процедуры clrscr и readln} const kol_el=38; {задаем количество элементов массива; при отладке программы удобнее задать меньшее количество элементов } type mas=array [1..kol_el] of integer; {создаем новый тип - массив} var T:mas; Procedure Preobr(var a:mas); {процедура, преобразующая переданный в качестве параметра массив по заданному правилу} var i:integer; {Здесь i – локальная переменная, она доступна только в теле данной процедуры. Переменная i, описанная в основной программе –глобальная и доступна в любом месте программы, но только если нет локальной переменной с тем же именем. В этой процедуре можно было бы и не описывать локальную i, а использовать глобальную, но хороший стиль программирования предполагает, что все переменные, которые используются только для выполнения каких-либо действий внутри подпрограммы должны быть в ней и описаны, чтобы избежать различных ошибок} begin for i:=1 to kol_el do if a[i]>0 then a[i]:=a[i]*(-2) else a[i]:=0; end; Function Pr(b:mas):integer; var i,p:integer; begin p:=0; for i:=1 to kol_el do if b[i] mod 2=1 then p:=p*b[i]; Pr:=p; {обязательное присвоение имени функции полученного результата} end; var i:integer; {описание i:integer; и Т:mas можно было бы расположить в одном разделе Var } Begin clrscr; Randomize; for i:=1 to kol_el do begin T[i]:=Random(29)-14; write(T[i]:4); end; Preobr(T);{при вызове процедуры происходит следующее: - в памяти создается копия массива T – массив a (формальный параметр процедуры), - выполняется тело процедуры, в котором преобразуется массив a; - возврат в основную программу на оператор, следующий за вызовом процедуры; При возврате в массив T переносятся значения преобразованного массива a } writeln; writeln; for i:=1 to kol_el do write(T[i]:4); {вывод преобразованного массива} {вызов функции Pr, выполнение тела функции, возврат в программу, вывод результата на экран : } write(#13,#10,#10,'Proizvedenie nechetnih elementov = ',Pr(T)); readln; End.