Санкт-Петербургский государственный горный институт им.Г.В.Плеханова
(технический университет)
Тема: Обработка массивов с использованием процедур, функций и ввода данных из файла.
Выполнил:студент группы ГГ-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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.