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

ТЕМА: Обработка двумерных массивов в программах на Turbo Pascal

ЦЕЛЬ РАБОТЫ: получить практические навыки по описанию и обработке массивов на TURBO PASCAL

Ход работы

Составить программу, выполняющую следующие функции:

1.  случайным образом заполнить двумерный массив А;

2.  в массиве А найти минимальный элемент и прибавит его к элементам первого столбца. Результат записать в массив В;

3. сложить массивы А и В. Результат записать в массив С;

4. в массиве С найти количество отрицательных элементов в нечетных столбцах и среднее значение элементов в четных столбцах

Пример выполнения задания

{Подключаем модуль по работе с экраном}

uses crt;

{описываем пользовательский тип Двумерный массив}

type matrix=array [1..20,1..20] of real;

{Описываем необходимые переменные}

var a1,b1,c1:matrix;

    sr,min,sum:real;

    kol,i,j,a,k,v,n,m,c,b,nom:integer;

begin

     {Очищаем экран}

     clrscr;

    

    {=====================

     первый пункт задания

    ======================}

 

    {Вводим отрезок для формирования массива}

     write('Введите отрезок: ');

     readln(a,b);

     {Вводим размер двумерного массива}

     write('Введите кол-во строк и столбцов:');

     readln(n,m);

     {Включаем генератор случайных чисел}

     randomize;

     {В цикле формируем элементы массива}

     for i:=1 to n do

         for j:=1 to m do

             a1[i,j]:=(b-a)*random+a;

 

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

     writeln('Исходный массив А');

     for i:=1 to n do

     begin

         for j:=1 to m do

             write(a1[i,j]:6:2,' ');

         writeln;

     end;

    

    {=====================

     второй пункт задания

    ======================}

 

     {Находим минимальное значение в массиве}

     min:=a1[1,1];

     for i:=1 to n do

         for j:=1 to m do

             if min>a1[i,j] then

                            min:=a1[i,j];

     {Выводим на экран найденный минимум}

     writeln('Минимум =',min:4:2);

 

     {Прибавляем к первому столбцу минимум и записываем результат в массив В}

     for i:=1 to n do

         for j:=1 to m do

             {Если столбец первый}

             if j=1 then

                    {В массив В записываем сумму элемента массива А и минимума}

                    b1[i,j]:=a1[i,j]+min

                    else

                    {Все остальные элементы просто переписываем в массив В}

                    b1[i,j]:=a1[i,j];

     writeln;

 

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

     writeln('Полученный массив B:');

     for i:=1 to n do

     begin

         for j:=1 to m do

             write(b1[i,j]:6:2,' ');

         writeln;

     end;

     writeln;

     

    {=====================

     третий пункт задания

    ======================}

 

     {Складываем массива А и В и записываем в массив С}

     for i:=1 to n do

         for j:=1 to m do

             c1[i,j]:=a1[i,j]+b1[i,j];

 

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

     writeln ('Полученный массив C:');

     for i:=1 to n do

     begin

         for j:=1 to m do

             write(c1[i,j]:6:2,' ');

         writeln;

     end;

     writeln;

 

    

    {=====================

     четвертый пункт задания

    ======================}

 

     {Находим в массиве С количество отрицательных элементов в нечетных столбцах}

     {В начале количество таких элементов 0}

     kol:=0;

     for i:=1 to n do

         for j:=1 to m do

             {Если столбец нечетный }

             if j mod 2<>0 then

                           {и если элемент меньше 0}

                           if c1[i,j]<0 then

                                        {то количество увеличивается на 1}

                                        kol:=kol+1;

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

    writeln ('Количество отрицательных элементов в нечетных столбцах равно: ',kol);

 

     {Находим среднее элементов в четных столбцах}

     {В начале сумма и количество таких элементов 0}

     kol:=0;

     sum:=0;

     for i:=1 to n do

         for j:=1 to m do

             {если столбец четный}

             if j mod 2=0 then

                          begin

                               {Суммируем элементы}

                               sum:=sum+c1[i,j];

                               {и считаем количество}

                               kol:=kol+1;

                          end;

     {Находим среднее значение элементов}

     sr:=sum/kol;

     {Выводим на экран найденное значение}

     writeln ('Среднее элементов в четных столбцах равно: ',sr:5:2);

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

     readln;

end.

 

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

 

Дан двумерный массив, заполнить его случайными вещественными числами, вывести начальный массив.

Определить, сколько раз в матрице встречается заданное число.

Найти произведение ненулевых элементов.

Найти произведение минимального элемента матрицы на сумму положительных элементов.

Вычислить сумму элементов первой и последней строк матрицы.

Вычислить среднее арифметическое значение элементов нечетных строк матрицы.

Поменять местами два любых столбца.

Преобразовать исходный массив так, чтобы последний элемент каждой строки был заменен суммой предыдущих элементов той же строки.

Найти количество отрицательных элементов в каждом столбце. Определить, в каком столбце отрицательных элементов больше.

Найти номера строк, содержащих только положительные числа. Если таких строк нет, то вывести соответствующее сообщение.

Заменить все положительные числа на 1, а отрицательные на -1. Вывести полученную матрицу.

Вывести нечетные элементы, стоящие на четных местах. 

Выполнить перемножение двух матриц с помощью двумерных массивов.

Сформировать одномерный массив, в который занести наибольшие элементы каждого столбца матрицы.

Задайте матрицу по следующей формуле: http://ok-t.ru/life-prog/baza2/1375294851742.files/image106.gif. Выведите полученную матрицу.

 

Дан двумерный массив размера n´n, заполнить его случайными целыми числами, вывести начальный массив.

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

Выполнить транспонирование матрицы.

Требуется уменьшить на 1 все числа в тех строках матрицы, которые не содержат отрицательных чисел.

Все элементы, расположенные ниже главной диагонали, замените нулями.

Среди элементов, расположенных ниже побочной диагонали, найдите минимальное значение.

Выведите элементы массива по спирали:

%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87