Обработка массивов с использованием процедур, функций и ввода данных из файла

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

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

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

Санкт-Петербургский государственный горный институт им.Г.В.Плеханова

(технический университет)

Кафедра информатики и компьютерных технологий

Лабораторная работа №7

Тема: Обработка массивов с использованием процедур, функций и ввода данных из файла.

Выполнил:студент группы ГГ-02     / /

(должность)                                             (подпись)                    (ф.и.о.) 

Проверил:                     / Н /

(должность)                      (подпись)                                           (ф.и.о.)

Дата:______________

Санкт-Петербург

2003

Цель работы: овладеть технологией постепенного наращивания программы с одновременной отладкой отдельных ее частей, получить представление об использовании массивов, процедур и функций, а также о вводе данных из файла.

Задание.

Применить технологию постепенного наращивания программы с одновременной ее отладкой для вычисления следа матрицы B=A*AT, где А – заданная матрица структуры m*n, причем m<=10, n<=10. Программа должна вводить размеры и элементы матрицы А из заранее созданного файла sled.inp и содержать процедуры вывода матрицы на экран, транспонирования, умножения двух матриц и функцию вычисления следа матрицы.

Решение.

Программа.

program sled;

type

mas=array[1..10,1..10] of real;

var

a,at,b:mas;

m,n,i,j:integer;

s:real;

f:text;

procedure mout(p:mas;m,n:integer);

var

i,j:integer;

begin for i:=1 to m do

begin

for j:=1 to n do

write(p[i,j]:7:1);

writeln;

end;

end;

procedure tr(p:mas;m,n:integer;var q:mas);

var

i,j:integer;

begin

for i:=1 to m do

for j:=1 to n do

q[j,i]:=p[i,j];

end;

procedure mult(p,q:mas;m,l,n:integer;var r:mas);

var

i,j,k:integer;

sum:real;

begin

for i:=1 to m do

for j:=1 to n do

begin sum:=0;

for k:=1 to l do

sum:=sum+p[i,k]*q[k,j];

r[i,j]:=sum;

end;end;

function sl(p:mas;m:integer):real;

var

i:integer;

sum:real;

begin

sum:=0;

for i:=1 to m do

sum:=sum+p[i,i];

sl:=sum;

end;

BEGIN

assign(f,'sled.inp');

reset(f);

readln(f,m);

readln(f,n);

for i:=1 to m do

for j:=1 to n do

read(f,a[i,j]);

close(f);

writeln('massiv A');

mout(a,m,n);

tr(a,m,n,at);

writeln('massiv AT');

mout (at,n,m);

mult(a,at,m,n,m,b);

writeln('Massiv B');

mout(b,m,m);

s:=sl(b,m);

writeln('Sled massiva B:s=',s:7:1);

end.

Результаты работы.

massiv A

1.0    5.0    6.0    9.0    2.0    3.0    5.0    5.0    5.0    8.0

-3.0    6.0    1.0    0.0    2.0    5.0    5.0    5.0    6.0    9.0

9.0    9.0    9.0    9.0    8.0    8.0   -5.0    0.0    3.0    2.0

-3.0    6.0    1.0    0.0    2.0    5.0    5.0    5.0    6.0    9.0

9.0    9.0    9.0    9.0    8.0    8.0   -5.0    0.0    3.0    2.0

1.0    5.0    6.0    9.0    2.0    3.0    5.0    5.0    5.0    8.0

-3.0    6.0    1.0    0.0    2.0    5.0    5.0    5.0    6.0    9.0

9.0    9.0    9.0    9.0    8.0    8.0   -5.0    0.0    3.0    2.0

-3.0    6.0    1.0    0.0    2.0    5.0    5.0    5.0    6.0    9.0

9.0    9.0    9.0    9.0    8.0    8.0   -5.0    0.0    3.0    2.0

massiv AT

1.0   -3.0    9.0   -3.0    9.0    1.0   -3.0    9.0   -3.0    9.0

5.0    6.0    9.0    6.0    9.0    5.0    6.0    9.0    6.0    9.0

6.0    1.0    9.0    1.0    9.0    6.0    1.0    9.0    1.0    9.0

9.0    0.0    9.0    0.0    9.0    9.0    0.0    9.0    0.0    9.0

2.0    2.0    8.0    2.0    8.0    2.0    2.0    8.0    2.0    8.0

3.0    5.0    8.0    5.0    8.0    3.0    5.0    8.0    5.0    8.0

5.0    5.0   -5.0    5.0   -5.0    5.0    5.0   -5.0    5.0   -5.0

5.0    5.0    0.0    5.0    0.0    5.0    5.0    0.0    5.0    0.0

5.0    6.0    3.0    6.0    3.0    5.0    6.0    3.0    6.0    3.0

8.0    9.0    2.0    9.0    2.0    8.0    9.0    2.0    9.0    2.0

Massiv B

295.0  204.0  235.0  204.0  235.0  295.0  204.0  235.0  204.0  235.0

204.0  242.0  103.0  242.0  103.0  204.0  242.0  103.0  242.0  103.0

235.0  103.0  490.0  103.0  490.0  235.0  103.0  490.0  103.0  490.0

204.0  242.0  103.0  242.0  103.0  204.0  242.0  103.0  242.0  103.0

235.0  103.0  490.0  103.0  490.0  235.0  103.0  490.0  103.0  490.0

295.0  204.0  235.0  204.0  235.0  295.0  204.0  235.0  204.0  235.0

204.0  242.0  103.0  242.0  103.0  204.0  242.0  103.0  242.0  103.0

235.0  103.0  490.0  103.0  490.0  235.0  103.0  490.0  103.0  490.0

204.0  242.0  103.0  242.0  103.0  204.0  242.0  103.0  242.0  103.0

235.0  103.0  490.0  103.0  490.0  235.0  103.0  490.0  103.0  490.0

Sled massiva B:s= 3518.0

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

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

Предмет:
Информатика
Тип:
Отчеты по лабораторным работам
Размер файла:
51 Kb
Скачали:
0