Скачиваний:
59
Добавлен:
10.02.2014
Размер:
173.57 Кб
Скачать

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

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

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

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

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

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

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

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

Одобрено

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

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

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

Балаково 2007

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

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

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

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

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

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

a: array [1..5,1..4] of integer;

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

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.

Соседние файлы в папке методические указания для лабораторных работ