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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 17:47   #1
aslanbek999
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 37
По умолчанию (паскаль) Обработка кв. матрицы. Программа есть. Не корректно работает функция SUM..

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

Я знаю что это очень приблизительная версия того что должно быть. Буду благодарен за любую помощь.


1.1.5/6 Метод решения задачи:

1. Нахождение максимального элемента.(здесь)
2. Если максимальный элемент выше главной диагонали, транспонировать матрицу М.
3. Если максимальный элемент ниже главной диагонали, определить сумму элементов строки и столбца с номерами, равными индексам максимального элемента

Код:
Program MaxInMatrix;
type
Matrix = array [1..5, 1..5] of real;
var
matr: Matrix;
i,j,n,m,im,jm : integer;
F1,F2:text;

function MaxMatrix(M: Matrix): real;
var
max: real;
i, j: integer;
begin
max:=M[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if Max<M[i,j] then
begin
max := M[i,j];
im:=i;
jm:=j;
end;
end;


function sum(M: Matrix): real;
var
S,L,F: real;
i, j,im,jm: integer;
begin
L:=0;
F:=0;
i:=2;
for j:=1 to 5 do
L:=L+M[im,j];
j:=2;
for i:=1 to 5 do;
F:=F+M[i,jm];
S:=F+L-M[im,jm];
sum:=S;
end;

procedure transmatrix(var M,N: Matrix);
var
i,j: integer;
begin
for i:=1 to 5 do begin
for j:=1 to 5 do
N[j,i]:=M[i,j];
end;
end;

begin
assign(F1,'isdan.pas');
assign(F2,'vdan.pas');
reset(f1);
rewrite(f2);
for i:=1 to 5 do
begin
for j:=1 to 5 do
read(f1,Matr[i,j]);
readln(f1);
end;
Maxmatrix(matr);
if im>jm then writeln(f2,'summa ravna',sum(matr))
else
for i:= 1 to n
for j:=1 to n
writeln(f2,N[i,j]);
close(f1);
close(f2);
end.
Windows квантумом шурша пишет свопы неспеша...

Последний раз редактировалось aslanbek999; 02.06.2009 в 17:59.
aslanbek999 вне форума Ответить с цитированием
Старый 02.06.2009, 18:25   #2
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Код:
procedure transmatrix(var M,N: Matrix);
var
i,j : integer;
K:real;
begin
for i:=1 to 5 do begin
for j:=i+1 to 5 do
K:=N[j,i];
N[j,i]:=M[i,j];
M[i,j]:=K;
end;
end;
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 02.06.2009, 18:30   #3
aslanbek999
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 37
По умолчанию

Спасибо за поправку. Сейчас попробую вбить так.
Windows квантумом шурша пишет свопы неспеша...
aslanbek999 вне форума Ответить с цитированием
Старый 02.06.2009, 19:51   #4
aslanbek999
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 37
По умолчанию

Всем спасибо, тему закрываю. Сам отвечу на свой вопрос.


Program MaxInMatrix;
type
Matrix = array [1..5, 1..5] of real;
var
matr: Matrix;
N: Matrix;
i,j,im,jm : integer;
F1,F2:text;

procedure MaxMatrix(var M: Matrix);
var
max: real;
i, j: integer;
begin
max:=Matr[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if Max<Matr[i,j] then
begin
max := M[i,j];
im:=i;
jm:=j;
end;
end;


function sum(M: Matrix): real;
var
S,L,F: real;
i, j: integer;
begin
L:=0;
F:=0;
i:=im;
for j:=1 to 5 do
L:=L+M[i,j];
j:=jm;
for i:=1 to 5 do
F:=F+M[i,j];
i:=im;
j:=jm;
S:=F+L-M[i,j];
sum:=S;
end;

procedure transmatrix(var Matr,N: Matrix);
var
i,j: integer;
K:real;
begin
for i:=1 to 5 do begin
for j:=1 to 5 do
N[j,i]:=Matr[i,j];
end;
end;

begin
assign(F1,'isdan.pas');
assign(F2,'vdan.pas');
reset(f1);
rewrite(f2);
for i:=1 to 5 do
begin
for j:=1 to 5 do
read(f1,Matr[i,j]);
readln(f1);
end;
MaxMatrix(Matr);
if im>jm then writeln(f2,'summa ravna',sum(matr))
else
transmatrix(Matr,N);
if jm>im then
for i:=1 to 5 do
writeln(f2,N[i,1],N[i,2],N[i,3],N[i,4],N[i,5]);
close(f1);
close(f2);
end.

рабочая, проверенная версия
Windows квантумом шурша пишет свопы неспеша...
aslanbek999 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структыры в С++ в борланд си, программа есть, но не работает... Помогите с ошибкой... Катюшенька Помощь студентам 2 29.03.2009 14:12
Программа ведёт учёт Электричества и Газа, постоянно работает, есть экспорт в Excel Gennadij2 Microsoft Office Excel 3 24.03.2009 12:41
Агрегатная функция SUM для DateTime _SERGEYX_ БД в Delphi 6 09.02.2009 12:40
Программа работает не корректно Neymexa Общие вопросы C/C++ 5 24.12.2008 19:17
не корректно работает функция "если" (+) zetrix Microsoft Office Excel 0 30.10.2006 19:19