Практическое занятие № 11

 

Тема: Создание программ с использованием подпрограмм-процедур

Цель занятия: получить практические навыки по описанию подпрограмм-процедур и их использованию в главной программе на Turbo Pascal

 

Ход работы

 

С помощью языка программирования Turbo Pascal написать программу для работы с массивами. Найти сумму максимальных элементов и количество четных чисел в двух массивах. Массивы хранят только целые значения.

Заполнения массива случайными числами и вывода массива на экран оформить в виде подпрограмм-процедур.

Нахождение максимального элемента в массиве и нахождения количества четных элементов в массив оформить в виде функций.

 

Выполнение работы

 

 

uses crt;

{описываем тип-массив из 50 целых элементов}

type mas=array[1..50] of integer;

var

   {исходные массивы}

   m1,m2:mas;

   {размеры массивов}

   n1,n2:integer;

   {промежуточные результаты максимума и количества в массивах}

   max1,max2:integer;

   kol1,kol2:integer;

 

{описываем процедуру для заполнения массива случайными числами

m - массив; n - количество его элементов}

procedure vvod (var m:mas; var n:integer);

{описываем локальные переменные}

var

   {счетчик цикла}

   i:integer;

   {концы отрезка}

   x,y:real;

begin

    write('Введите размер массива: '); readln (n);   

    write('Введите концы отрезка для формирования массива: ');

    readln(x,y);    

    randomize;

    for i:=1 to n do

         m[i]:=round((y-x)*random+x);

end;

 

{описываем процедуру для вывода массива на экран

m - массив, n - количество элементов}

procedure vivod (var m:mas; n:integer);

{описываем локальные переменные}

var

   {счетчик цикла}

   i:integer;

begin

     for i:=1 to n do

         write(m[i]:4);

     writeln;

end;

 

 

{описываем функцию для нахождения максимального элемента в массиве

m - массив, n - размер массива}

function max (var m:mas; n:integer):integer;

{описываем локальные переменные}

var

   {счетчик цикла}

   i:integer;

   {переменная для максимума}

   mx:integer;

begin

     mx:=m[1];

     for i:=2 to 10 do

         if mx<m[i] then

                     mx:=m[i];

    {функции присваиваем ответ}

    max:=mx;

end;

 

{описываем функцию для нахождения количества четных элементов в массиве

m - массив, n - количество элементов}

function kol (var m:mas; n:integer):integer;

{описываем локальные переменные}

var

   {счетчик цикла}

   i:integer;

   {переменная для количества}

   k:integer;

begin

     k:=0;

     for i:=1 to 10 do

         if m[i] mod 2 = 0 then

                         k:=k+1;

    {функции присваиваем ответ}

    kol:=k;

end;

 

{основная программа}

begin

     clrscr;

     {формируем первый массив}

     writeln('Первый массив:');

     vvod(m1,n1);

     {выводим полученный массив на экран}

     vivod(m1,n1);

     {определяем максимальное значение в массиве и записываем в max1}

     max1:=max(m1,n1);

     {определяем количество четных элементов в массиве и записываем в kol1}

     kol1:=kol(m1,n1);

 

     {формируем второй массив}

     writeln('Второй массив:');

      vvod(m2,n2);

     {выводим полученный массив на экран}

     vivod(m2,n2);

     {определяем максимальное значение в массиве и записываем в max2}

     max2:=max(m2,n2);

     {определяем количество четных элементов в массиве и записываем в kol2}

     kol2:=kol(m2,n2);

 

     {выводим сумму максимальных элементов}

     writeln('Сумма максимальных элементов массивов равна:',max1+max2);

     {выводим количество четных элементов}

     writeln('Количество четных элементов массивов равно:',kol1+kol2);

 

     {делаем паузу для просмотра результата}

     writeln('Для продолжения нажмите ENTER...');

     readln;

end.

 

Решите самостоятельно:

 

Дан одномерный целочисленный массив.

С помощью подпрограмм-процедур выполните заполнение массива случайными числами и вывод элементов массива на экран.

С помощью процедур или функций решите следующие задачи:

  1. Уменьшите элементы массива на 2 (используйте процедуру).
  2. Найдите наибольший и наименьший элементы массива и их сумму.
  3. Найдите наименьший четный элемент массива.
  4. Найдите количество элементов, попадающих в диапазон [c, d].
  5. Вычислите номер минимального элемента массива и сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
  6. Найдите два наименьших элемента.
  7. Заменить все числа, большие данного числа, на среднее арифметическое всех чисел массива.

 

Дан двумерный целочисленный массив (матрица).

С помощью подпрограмм-процедур выполните заполнение массива случайными числами и вывод элементов массива на экран.

  1. Определить, сколько раз встречается число 7 среди элементов массива (оформить в виде функции)
  2. Вывести на экран все четные строки, то есть с четными номерами (оформить в виде процедуры).
  3. Вывести k-й столбец матрицы (оформить в виде процедуры, k передать как параметр).
  4. В матрице поменяйте местами вторую и последнюю строки.
  5. Найдите количество положительных элементов матрицы (оформить функцией) и замените все нечетные элементы на него (оформить процедурой).