Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2011, 18:37   #1
Vogelfrei
 
Регистрация: 15.12.2011
Сообщений: 3
По умолчанию сумма элементов квадратной матрицы расположенных выше главной диагонали (Pascal)

Имеется задание:
составить подпрограмму-функцию для нахождения суммы элементов квадратной матрицы находящихся выше главной диагонали и определить максимальную из указанных сумм для матриц X=A2+B3, Y=AAT+BBT
где А,В - исходные произвольно заданные матрицы размером 5х5


Код:
 Program kyrs; 
 const 
 Nmax=5; 
 type 
 Matrics=array[1..nmax, 1..nmax] of integer; 
 Masiv=array[1..nmax] of integer; 
 var 
 a,b,a2,b2,b3,at,bt,ata,btb,x,y:matrics; 
 m,n:masiv; 
 i,j,t:integer; 
 sx,sy:real; 

 Procedure input (var a:matrics); 
 var i,j:integer; 
 begin 
 for i:=1 to 5 do 
 for j:=1 to 5 do 
 begin 
 write ('[',i,',',j,']='); 
 read(a[i,j]); 
 end; 
 for i:=1 to 5 do 
 begin 
 for j:=1 to t do 
 write(a[i,j]); 
 writeln 
 end; 
 end; 
 Procedure umn (a,b:matrics; var a2:matrics); 
 var 
 i,j,k,s:integer; 
 begin 
 for i:=1 to 5 do 
 for j:=1 to 5 do 
 begin 
 s:=0; 
 b:=a; 
 for k:=1 to 5 do 
 s:=s+a[k,i]*b[j,k]; 
 a2[i,j]:=s; 
 end; 
 end; 
 Procedure summa (a,b:matrics; var x:matrics); 
 var 
 i,j:integer; 
 begin 
 for i:=1 to 5 do 
 for j:=1 to 5 do 
 x[i,j]:= a[i,j]+b[i,j]; 
 end; 

 Procedure over (x:matrics; Var s:real); 
 var 
 z:real; 
 Begin 
 z:=0; 
 for i:= 1 to 4 do 
 for j:= 2 to 5 do 
 s:=z+x[i,j]; 
 Writeln('summa elementov vishe glavnoi diagonali=', s:5); 
 end; 
 Procedure transp(a:matrics; var at:matrics); 
 var 
 i,j:integer; 
 begin 
 for i:=1 to 5 do 
 for j:=1 to 5 do 
 at[i,j]:=a[i,j] 
 end; 
 begin 
 writeln('vvedite elementi matricy a'); 
 input(a); 
 writeln('vvedite elementy matricy b'); 
 input(b); 
 umn(a,a ,a2); 
 umn(b,b,b2); 
 umn(b2,b,b3); 
 trans(a,at); 
 trans(b,bt); 
 umn(a,at,ata); 
 umn(b,bt,btb); 
 summa(a2,b3,x); 
 summa(ata,btb,y); 
 sx:=over(x,); 
over(y,sy); 
 if sx>sy 
 then 
 writeln('max=',sx); 
 else writeln('max=', sy); 
 if sx=sy; 
 then writeln('oni ravni!'); 
 readln; 
 end. 
 end.

после ввода матриц программа вылетает и ругается ошибкой 201(
где косяк?

Последний раз редактировалось Vogelfrei; 15.12.2011 в 18:40.
Vogelfrei вне форума Ответить с цитированием
Старый 15.12.2011, 19:23   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

У вас в процедуре input
Код:
 for j:=1 to t do
Явно должно быть
Код:
 for j:=1 to 5 do
В основной программе неправильно вызвана процедура over. Вместо
Код:
sx:=over(x,);
Должно быть
Код:
over(x,sx);
Код:
 if sx>sy 
 then 
 writeln('max=',sx); 
 else writeln('max=', sy);
Перед else точки с запятой не нужно.
Если trans(которая кстати изначально у вас называется transp) это процедура транспонирования матрицы, то она не транспонирует матрицу
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 15.12.2011, 19:43   #3
Vogelfrei
 
Регистрация: 15.12.2011
Сообщений: 3
По умолчанию

уже исправила, но по ходу дела проблема не в этом, потому что вылетает с процедуры umn
Vogelfrei вне форума Ответить с цитированием
Старый 15.12.2011, 20:18   #4
Vogelfrei
 
Регистрация: 15.12.2011
Сообщений: 3
По умолчанию

заработало) только матрица почему-то в линию выводится
Vogelfrei вне форума Ответить с цитированием
Старый 15.12.2011, 20:38   #5
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
только матрица почему-то в линию выводится
Форматный вывод попробуй использовать
Код:
for i:=1 to 5 do 
 begin 
 for j:=1 to 5 do 
 write(a[i,j]:3); 
 writeln 
 end;
И тут тоже
Код:
 if sx>sy 
 then 
 writeln('max=',sx:4:2); 
 else writeln('max=', sy:4:2);
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать программу поиска суммы всех элементов, расположенных на главной диагонали и выше её в матрице (Pascal) sanek306 Помощь студентам 4 21.11.2011 11:08
Все элементы выше главной диагонали квадратной матрицы, заменить на минимальный элемент (VisualBasic) ride013 Помощь студентам 4 03.05.2011 20:40
Найти сумму парных элементов матрицы v[4][4].Расположенных ниже главной диагонали. Black_Angel91 Помощь студентам 11 21.04.2009 20:51
произведение всех элементов, расположенных на главной диагонали и выше ее матрицы размером 4х4, Pascal __FIRST__ Помощь студентам 2 12.12.2008 02:43
Найти отношения суммы элементов главной диагонали и суммы элементов побочной диагонали квадратной матрицы Elmander Помощь студентам 2 21.06.2007 07:15