Текст задания
Задана последовательность значений элементов некоторого массива до и после преобразования по некоторому правилу. Определите алгоритм преобразования и напишите программу, которая:
- формирует массив из заданного количества случайных целых чисел в заданном диапазоне и выводит элементы массива на экран;
- по определенному вами алгоритму преобразовывает этот массив и выводит на экран элементы преобразованного массива.
- производит заданные вычисления и выводит результат на экран.
Указания:
- преобразование массива оформить в виде процедуры;
- заданные вычисления оформить в виде функции;
- все выводы на экран осуществлять в основной программе.
Вариант №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.

