Текст задания

Задана последовательность значений элементов некоторого массива до и после преобразования по некоторому правилу. Определите алгоритм преобразования и напишите программу, которая:

  1. формирует массив из заданного количества случайных целых чисел в заданном диапазоне и выводит элементы массива на экран;
  2. по определенному вами алгоритму преобразовывает этот массив и выводит на экран элементы преобразованного массива.
  3. производит заданные вычисления и выводит результат на экран.

Указания:

  • преобразование массива оформить в виде процедуры;
  • заданные вычисления оформить в виде функции;
  • все выводы на экран осуществлять в основной программе.

Вариант №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.

Результат выполнения программы


Написать отзыв

Внимание: HTML не поддерживается! Используйте обычный текст!
    Плохо           Хорошо

Работа с одномерными массивами в Pascal


0 отзывов / Написать отзыв


Помогло решение? Буду рад маленькой награде=)

Теги: Pascal

Не подошла работа?

Узнайте стоимость написания работы по Вашему заданию

(это быстро и бесплатно)

Узнать стоимость

Спасибо, не надо