Обработка двухмерных массивов на языке TURBO PASCAL: Методические указания к выполнению лабораторных работ

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

Саратовский государственный технический университет

Балаковский институт техники, технологии и управления

Обработка двухмерных массивов

на языке TURBOPASCAL

Методические указания к выполнению лабораторных работ

по курсу “Программирование и основы алгоритмизации”

для студентов специальности 210100

дневной, вечерней и заочной форм обучения

          Одобрено

                                  редакционно-издательским советом

                                 Балаковского института техники,

                               технологии и управления

Балаково 2007

Цель работы – освоение методов обработки двухмерных массивов на языке программирования TURBO PASCAL.

Основные понятия

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

Двухмерный массив описывается в разделе переменных:

          а: array [1..5] of array [1..4] of integer;

Этот массив можно представить в качестве двумерной матрицы с 20 элементами (4×5). Возможна сокращенная запись приведенного выше опи­сания массива:

          a: array [1..5,1..4] ofinteger;

          Полный вид двухмерного массива (матрицы):

          a[1,1]     a[1,2]     a[1,3]     a[1,4]

          a[2,1]     a[2,2]     a[2,3]     a[2,4]

          a[3,1]     a[3,2]     a[3,3]     a[3,4]

          a[4,1]     a[4,2]     a[4,3]     a[4,4]

a[5,1]     a[5,2]     a[5,3]     a[5,4]

Ввод элементов матрицы осуществляют с помощью вложенных цик­лов for:

for i:=1 to 5 do

      for j:=1 to 4 do Read(а[i,j]);

Вывод элементов матрицы осуществляется аналогично:

for i:=1 to 5 do

      for j:=1 to 4 do Write(а[i,j]);

Блок схемы операторов ввода и вывода на рис.1 и рис.2.

Подпись: Рис.1: Блок схема ввода элементов матрицы Подпись: Рис.2: Блок-схема вывод элементов матрицы                  

Данные будут выводиться сплошным неразделимым потоком в одну строчку. Чтобы вывести данные как в таблице нужно после каждого эле­мента вставить пробел и после каждой выведенной строки сделать переход на новую строку с помощью оператора WriteLn. Тело внешнего цикла за­ключается в операторные скобки begin и end.

for i:=1 to 5 do  begin

                               for j:=1 to 4 do Write(a[i,j],’ ‘);

WriteLn;

end;

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Номер варианта выбирается по порядковому номеру студента в спи­ске группы. По проведенному заданию требуется:

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

2. Составить графическую схему алгоритма.

3. Записать программу на языке Turbo Pascal.

4. Выполнить расчеты на ЭВМ.

5. Написать отчет по лабораторной работе.

ПРИМЕРЫ ВЫПОЛНЕНИЯ РАБОТ

Пример 1. Найдите максимальные элементы каждой строки матрицы и выведите их на экран.

program max_strok;

var  i,j,m,n,imax,jmax: byte;

                 a: array[1..10,1..10] of integer;

begin

   Read(n,m);

   for i:=1 to n do

         for j:=1 to m do Read(a[i,j]);

    for i:=1 to n do

      begin

        imax:=i; jmax:=1;

          for j:=2 to m do

     begin

         if a[imax,jmax]<a[i,j] then

                                                 begin

                                                      imax:=i;

                                                     jmax:=j;

                                                end;

     end;

          Writeln (‘ max[’,I,’]=’,a[imax,jmax]);

       end;

end.

Минимальные элементы строк массива находятся аналогично, только в условии меняется знак a[imin,jmin]>a[i,j].

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

program sum_strok;

var  i,j,m,n: byte;

                 a: array[1..10,1..10] of integer;

                s: array[1..10] of integer;

begin

   Read(m,n);

   for i:=1 to n do

         for j:=1 to m do Read(a[i,j]);

     for i:=1 to n do

        begin

            s[i]:=o;

            for j:=1 to m do s[i]:= s[i]+ a[i,j];

        end;

    for i:=1 to n do Write(‘  ‘,s[i]);

end.

Произведение элементов строк матрицы находится аналогично, только начальным значениям произведений присваивается p[i]:=1.

Пример3. Транспонируйте матрицу (n,m) и выведите ее на экран:

program transport;

var  i,j,n,m : byte;

       a: array[1..3,1..3] of integer;

begin

   for i:=1 to n do

      for j:=1 to m do Read(a[i,j]);

  for j:=1 to m do

     begin

          for i:=1 to n do     Write(a[i,j],’ ‘);

         WriteLn;

    end;

end.

Пример 4: Выведите элементы главной диагонали квадратичной мат­рицы (3х3) на экран.

Квадратная матрица- матрица с равным количеством строк и столб­цов. Работая с квадратными матрицами, всегда следует искать какие-либо определенные закономерности в индексах, чтобы облегчить решение по­ставленной задачи.

На пример:

- у элементов главной диагонали               i=j ;

-у элементов выше главной диагонали      i<j;

-у элементов ниже главной диагонали      i>j;

-у элементов побочной диагонали             i+j=n+1

(n - порядок матрицы);

Program diagon;

Var  i,j :byte;

       a: array[1..3,1..3] of integer;

begin

   for i:=1 to 3 do

      for j:=1 to 3 do Read(a[i,j]);

   for i:=1 to 3 do

      for j:=1 to 3 do  If  i=j  then  Write(a[i,j],’   ‘);

end.

Пример 5. Написать программу, которая в каждой строке матрицы сортирует элементы по возрастанию.

program sort;

var  a:array[1..5,1..5] of real;

      c: real;I,j,k:byte;

begin

   writeln(‘ Введитематрицу ’);

   for i:=1 to 5 do

       for j:=1 to 5 do read(a[i,j]);

   for i:=1 to 5 do

      begin

          for j:=5 downto 1 do

             begin

                for k:=2 to i do

                   begin

                       c:=A[i,k-1];

                       if c>A[i,k] then begin

                                                    A[i,k-1]:=A[i,k];

                                                     A[i,k]:=c;

                                                end

                   end;

             end;

   end;

for i:=1 to 5 do

   begin

      for j:=1 to 5 do write(A[i,j],’ ‘);

writeln;

end;

end.

Варианты заданий

1.  Найдите минимальные элементы в каждой строке матрицы (n,m) и выведите их в виде одномерного массива.

2.  Найдите максимальные элементы в каждом столбце матрицы (n,m) и выведите их в виде одномерного массива.

3.  Найдите минимальные элементы в каждом столбце матрицы (n,m) и выведите их в виде одномерного массива.

4.  Замените элементы главной диагонали матрицы (n, n) на 0 , а все остальные элементы матрицы на 1.

5.  Замените элементы побочной диагонали матрицы (n, n) на 1, а все остальные элементы матрицы на 0.

6.  Найдите сумму элементов главной диагонали матрицы (n, n).

7.  Найдите произведение элементов побочной диагонали мат­рицы (n,n).

8.  Найдите сумму элементов находящихся выше главной диаго­нали матрицы (n, n).

9.  Найдите сумму элементов находящихся ниже главной диаго­нали матрицы (n,n).

10.  Найдите максимальную сумму элементов строк матрицы (n,m).

11.  Найдите минимальную сумму элементов столбцов матрицы (n,m).

12.  Найдите минимальное произведение элементов строк матрицы (n,m).

13.  Найдите максимальное произведения элементов столбцов матрицы (n,m).

14.  Напишите программу, увеличивающую каждый элемент мат­рицы (n,m) в 3 раза и сохраняющую результат в виде второй мат­рицы.

15.  Сложите соответствующие эле­менты двух матриц (n,m) и выведите результирующую матрицу.

16.  Напишите программу, меняющую знак каждого элемента мат­рицы (n,m) на противоположный знак.

17.  Найдите отрицательные элементы в матрице (n,m) и сохраните их в виде отдельного одномерного массива.

18.  Найдите все элементы матрице (n,m) меньше единицы и сохра­ните их индексы в виде отдельного одномерного массива.

19.  Найдите в матрице (n,m) максимальный и минимальный эле­мент и поменяйте их местами.

20.  Определите, каких положительных или отрицательных элемен­тов в матрице (n,m) больше.

21.  Найдите сумму элементов четных и сумму нечетных строк матрицы (n,m).

22.  Найдите произведения элементов четных и нечетных столбцов мат­рицы (n,m).

23.  Найдите все элементы матрицы (n,m) кратные 5 и сохраните их в одномерном массиве.

24.  Найдите все элементы матрицы (n,m), значения которых нахо­дятся в интервале (а, в) и сохраните их в одномерном массиве.

Похожие материалы

Информация о работе