Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ матрицы(сложение)

Автор: kvaga 5.11.2007 18:49

Составьте программу обработки двумерных массивов.Организуйте ввод исходных данных из файла и вывод результатов в файлб находящийся на диске в каталоге(устанавливается пользователем) (n=5)
Задача
Определить матрицу С являющююся суммой нижней треугольной матрциы на верхнюю треугольную матрицу того же порядка

вот пример труегольной(n=5)
a[1,1]
a[2,1] a[2,2]
a[3,1] a[3,2] a[3,3]
a[4,1] a[4,2] a[4,3] a[4,4]
a[5,1] a[5,2] a[5,3] a[5,4] a[5,5]

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

ps "Организуйте ввод исходных данных из файла и вывод результатов в файлб находящийся на диске в каталоге" сделаю сам ^^

Автор: volvo 5.11.2007 19:35

Что-то ты сам себе противоречишь... В заголовке написано "перемножение", в теме -

Цитата
являющююся суммой нижней треугольной матрциы на верхнюю треугольную матрицу того же порядка
... Что-то одно выбери уже...

Перемножение матриц, кстати, есть здесь: http://forum.pascal.net.ru/index.php?s=&showtopic=2694&view=findpost&p=23475
а складываются матрицы вообще поэлементно...

Автор: kvaga 6.11.2007 0:22

как ни странно так в задании и написанно суммой нижней и верхней треугольной матрицы того же порядка

Автор: volvo 6.11.2007 0:31

Ну вот и складывай: 2 вложенных цикла, один по строкам, второй - по столбцам. Примеров сложения матриц на форуме куча. Если же для хранения своей матрицы ты используешь какую-то специальную структуру, то показывай какую...

Автор: kvaga 6.11.2007 0:34

эт у меня вторая лекция по паскалю..вот 2 задание по практике))

вот на лекции давали пример матрицы
Program Lab2;
uses crt;
const n=5;
Var a:array[1..n,1..n] of real;
x,b:array[1..n] of real;
i,j:integer;
fin,fout:text;
Begin
assign(fin,'d:\lab7\lab7.dat');
assign(fout,'d:\lab7\lab7.res');
reset(fin); rewrite(fout);
for i:=1 to n do
begin
for j:=1 to n do read(fin,a[i,j]);
readln(fin)
end;
for i:=1 to n do read(fin,b[i]);
close(fin);
writeln(fout,'Peshenie lab7');
writeln('Matrica koeficientov:');
for i:=1 to n do
begin
for j:=1 to i do write (fout,' ',a[i,j]:5:2);
writeln(fout);
end;
writeln('Vector cvobodnix 4lenov:');
for i:=1 to n do write(fout,' ',b[i]:5:2);
writeln('Vector reshenie:');
for i:=1 to n do write(fout,' ',x[i]:5:2);

close(fout);
writeln('Programma vipolneniy rezyltatov d faile labt.dat');
readln
End.

где ввод данных из файла и результат записывается в фаил...

и надо также напистаь программу по моему заданию(

Автор: kvaga 6.11.2007 1:34

т.к. при сложении матриц их элементы соответственно складываются..то я думаю будет так


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

Автор: volvo 6.11.2007 1:56

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

И потом, верхнетреугольная матрица - это не такая:
x x x x x
x x x x 0
x x x 0 0
x x 0 0 0
x 0 0 0 0


а вот такая:
x x x x x
0 x x x x
0 0 x x x
0 0 0 x x
0 0 0 0 x

(по определению, матрица A порядка N является верхней треугольной, если Aik = 0 для всех i > k)

Автор: kvaga 6.11.2007 2:00

а да..точно..вы правы...но вот как это сделать((

Автор: volvo 6.11.2007 5:24

Ну, как прочитать 2 матрицы - должно быть понятно... Тем более, ты написал в первом же посте, что ввод исходных данных сделаешь сам...

А сложить 2 матрицы -

for i := 1 to n do
for j := 1 to n do
C[i, j] := A[i, j] + B[i, j]; { <--- где A и B - две треугольных матрицы, C - результат}

Автор: kvaga 6.11.2007 21:42

все написал код..спс всем кто помогал..его можно дабавить в фак по матрицам...т.к. нет там аналоничного задания


Задание
Составьте программу обработки двумерных массивов.Организуйте ввод исходных данных из файла и вывод результатов в файлб находящийся на диске в каталоге(устанавливается пользователем) (n=5-порядок матрицы)
Определить матрицу С являющююся суммой нижней треугольной матрциы на верхнюю треугольную матрицу того же порядка


program lab7;
uses crt;
const nmax=5; nl=#13#10; w=5; v=1;
type Matrix=array[1..nmax,1..nmax] of real;
var matr1, matr2: Matrix;
resmatr: Matrix;
n, i, j: integer;
t1, t2, fout: text;
begin
clrscr;
assign(t1, 'D:\lab7\t1.txt'); reset(t1);
assign(t2, 'D:\lab7\t2.txt'); reset(t2);
assign(fout, 'D:\lab7\fout.txt'); rewrite(fout);
read(t1, n);
for i:=1 to n do
for j:=1 to n do
read(t1, matr1[i,j]);
for i:=1 to n do
for j:=1 to n do
read(t2, matr2[i,j]);
begin
for i:= 1 to n do
for j:=1 to n do
resmatr[i,j]:=matr1[i,j]+matr2[i,j];
end;
for i:=1 to n do
begin
for j:=1 to n do
write(fout, ' ', resmatr[i,j]:w:v);
write(fout, nl);
end;
writeln(fout, nl,nl, ' Nazarov Dima. ');
close(t1); close(t2); close(fout);
write(nl,nl, ' THE END. Rezultat v faile====)PreSS EnteR ');
readkey
end.


t1.txt { матрица первая}
t2.txt { матрица вторая }
например вводим в первый фаил нижнюю треугольную матрицу:
5 {порядок матрицы}
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1
а во второй фаил верхнюю треугольную того же порядка
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1

Программа высчитает результат и в файле результата напишет ответ
2 1 1 1 1
1 2 1 1 1
1 1 2 1 1
1 1 1 2 1
1 1 1 1 2