Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab_rab_Pascal_OZO / Lab_15_Работа_с_двумерн_массивами

.doc
Скачиваний:
18
Добавлен:
21.03.2015
Размер:
56.83 Кб
Скачать

Лабораторная работа № 15.

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

Цель: изучение и приобретение навыков работы с двумерными массивами, и получение дальнейших навыков по отладке и тестированию программ.

Оборудование и программное обеспечение: компьютер, Turbo Pascal 7.0.

Место проведения:

Время:

Пример 1. Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы.

PROGRAM EX_1;

CONST n=3; {Количество строк}

m=5; {Количество столбцов}

TYPE mas=array[1..n,1..m] of real;

VAR b: mas; {Массив}

i: integer; {Индекс строки}

j: integer; {Индекс столбца}

s: real; {Сумма}

BEGIN

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

Writeln('Введите значения элементов матрицы:');

for i:=1 to n do

for j:=1 to m do

readln(b[i,j]);

{Вычисление суммы}

s:=0;

for i:=1 to n do

for j:=1 to m do

s:=s+b[i,j];

writeln('Сумма = ',s);

END.

Пример 2. Дана матрица целых чисел размером 4x4. Заменить все элементы главной диагонали на нули. Вывести на экран монитора содержимое матрицы до обработки и после обработки.

PROGRAM EX_2;

VAR matr: array[1..4,1..4] of integer; {Матрица}

i: integer; {Индекс строки}

j: integer; {Индекс солбца}

BEGIN

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

for i:=1 to 4 do

for j:=1 to 4 do

begin

write('Введите элемент ',i,' ',j,' ');

readln matr[i,j];

end;

{Вывод содержимого матрицы до обработки}

Writeln('Содержимое матрицы до обработки');

for i:=1 to 4 do begin

for j:=1 to 4 do

write(matr[i,j]:4);

writeln;

end;

{Обработка матрицы}

for i:=1 to 4 do matr[i,i]:=0;

{Вывод содержимого матрицы после обработки}

Writeln('Содержимое обработанной матрицы ');

for i:=1 t0 4 do begin

for j:=1 to 4 do

write(matr[i,j]:4);

writeln;

end;

END.

Пример 3. Сгенерировать 2-мерный числовой массив размера n*n. Найти скалярное произведение строки, в которой находится наименьший элемент, на столбец, в котором находится наибольший элемент.

Program min_na_max;

uses crt;

const n=3;

type matrix=array [1..n,1..n] of integer;

var ms:matrix;

scalyar:integer;

procedure gener(a,b:integer; var m:matrix);

var ii,jj:byte;

begin

randomize;

for ii:=1 to n do

for jj:=1 to n do

m[ii,jj]:=a+random(b-a);

end;

procedure vivod(x,y,shagx,shagy:byte; m:matrix);

var ii,jj:byte;

begin

for ii:=1 to n do

for jj:=1 to n do

begin

gotoxy(x+shagx*(ii-1),y+shagy*(jj-1));

writeln(m[ii,jj]:shagx);

end;

end;

function stroka(m:matrix):integer;

var imin,jmin,rezmin:byte;

min:integer;

begin

min:=m[1,1];

for imin:=1 to n do

for jmin:=1 to n do

if m[imin,jmin]<min then

begin

min:=m[imin,jmin];

rezmin:=imin;

end;

stroka:=rezmin;

end;

function stolbets(m:matrix):integer;

var imax,jmax,rezmax:byte;

max:integer;

begin

max:=m[1,1];

for imax:=1 to n do

for jmax:=1 to n do

if m[imax,jmax]>max then

begin

max:=m[imax,jmax];

rezmax:=jmax;

end;

stolbets:=rezmax;

end;

function scalar_multiplication(str,stb:integer;m:matrix):integer;

var k:byte;

sc:integer;

begin

sc:=0;

for k:=1 to n do

sc:=sc+m[str,k]*m[k,stb];

scalar_multiplication:=sc;

end;

BEGIN

clrscr;

writeln('Исходные данные');

gener(-10,10,ms);

vivod(2,2,5,1,ms);

writeln;

writeln('Скалярное произведение строки с наименьшим элементом');

writeln('на столбец с наибольшим элементом равно ',

scalar_multiplication(stroka(ms),stolbets(ms),ms));

readln;

END.

Порядок выполнения работы:

Задание: Создать и отладить программу для решения следующую задачу (см. Приложение).

Содержание отчета по каждому заданию:

  • исходные данные (условие задачи);

  • алгоритм (блок-схема) решения задачи;

  • текст программы (или основной фрагмент программы);

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

Приложение лабораторной работе №15: (ваш номер по журналу соответствует номеру варианта)

  1. Дана матрица целых чисел размером 4x3. Определите сумму каждой строки этой матрицы. Результат вывести на экран монитора.

  2. Дана матрица целых чисел размером 3x4. Определите сумму каждого столбца этой матрицы. Результат вывести на экран монитора.

  3. Дана матрица целых чисел размером 4x4. Определите сумму элементов расположенных выше главной диагонали. Результат вывести на экран монитора.

  4. Дана матрица целых чисел размером 4x3. Отсортировать каждую строку матрицы по возрастанию. Вывести содержимое матрицы до обработки, и после обработки.

  5. Дана матрица целых чисел размером 3x4. Отсортировать каждый столбец матрицы по убыванию. Вывести содержимое матрицы до обработки, и после обработки.

  6. Дана матрица целых чисел размером 5x3. Заменить все отрицательные элементы матрицы на нули. Вывести содержимое матрицы до обработки и после обработки.

  7. Дана матрица целых чисел размером 5x3. Определить минимальный элемент матрицы. Результат вывести на экран монитора.

  8. Дана матрица целых чисел размером 4x4. Увеличить все чётные элементы на 16. Вывести на экран содержимое обработанной матрицы.

  9. Дана матрица целых чисел размером 5x3. Заменить все положительные элементы матрицы на единицы. Вывести содержимое матрицы до обработки и после обработки.

  10. Дана матрица целых чисел размером 5x3. Определить максимальный элемент матрицы. Результат вывести на экран монитора.

  11. Дана матрица целых чисел размером 4x4. Все нечётные элементы увеличить втрое. Вывести на экран содержимое обработанной матрицы.

  12. Дана матрица целых чисел размером 4x3. Отсортировать каждую строку матрицы по убыванию. Вывести содержимое матрицы до обработки, и после обработки.

  13. Дана матрица целых чисел размером 3x4. Отсортировать каждый столбец матрицы по возрастанию. Вывести содержимое матрицы до обработки, и после обработки.

  14. Дана матрица целых чисел размером 4x4. Определите сумму элементов расположенных ниже главной диагонали. Результат вывести на экран монитора.

  15. Дана матрица целых чисел размером 4x4. поменять местами строки и столбцы этой матрицы. Вывести содержимое матрицы до обработки и после обработки.