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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2011, 12:33   #1
Alexey355
 
Регистрация: 12.03.2011
Сообщений: 5
Восклицание В квадратной матрице найти столбец с максимальной суммой и строку с максимальной суммой (Pascal)

условие такое:
дана квадратная матрица. Если номер столбца с максимальной суммой элементов совпадает с номером строки с максимальной суммой элементов, определить сумму найденных элементов строки и столбца, иначе вывести номера найденных строки и столбца с максимальными суммами.
Вот что вышло:
Код:
program ADR_433_11;
type mas=array [1..10,1..10] of integer;

procedure input(var X:mas; var n:integer);
var i,j:integer;
begin
writeln('Введите размер кв. матрицы : ');
readln(n);
writeln('введите кв. матрицу X');
for i:=1 to n do
for j:=1 to n do
read(X[i,j]);
end;

function f1(X:mas; n:integer; var max_i:integer; var ni:integer):integer;
var     i,j,si,sj:integer;
begin
si:=0;
for i:=1 to n do
for j:=1 to n do
begin
si:=si+x[i,j];
end;
max_i:=X[1,1];
ni:=1;
for i:=2 to n do
if max_i<x[i,j] then
begin
max_i:=X[i,j];
ni:=i;
end;
end;

function f2(X:mas; n:integer; var max_j:integer; var nj:integer):integer;
var
    i,j,si,sj:integer;
begin
sj:=0;
for i:=1 to n do
for j:=1 to n do
begin
sj:= sj+x[i,j];

end;
max_j:=x[1,1];
nj:=1;
for j:=2 to n do
if max_j<x[i,j] then
begin
max_j:=x[i,j];
nj:=j;
end;
end;

procedure pr3(max_i,max_j:integer);
var  i,j,si,sj,s,ni,nj:integer;
begin
if ni=nj then
begin
s:=max_i+max_j;
writeln('сумма эл-тов в строке = ',max_i);
writeln('сумма эл-тов в столбце = ',max_j);
writeln('сумма эл-тов в строке и столбце = ',s)
end else
begin
writeln('Номер строки с макс. суммой= ',ni,';  макс. сумма= ',max_i);
writeln('Номер столбца с макс. суммой= ',nj,';  макс. сумма= ',max_j);
end;
end;

var A:mas;
    ni,nj,si,sj,i,j,n,s,max_i,max_j:integer;
begin
input(A,n);
f1(A,n,max_i,ni);
f2(A,n,max_j,nj);
pr3(max_i,max_j);
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 26.03.2011 в 14:25.
Alexey355 вне форума Ответить с цитированием
Старый 26.03.2011, 14:06   #2
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
что неверно в составленной программе
функции поиска работают не правильно, нужно так:
Код:
type mas=array [1..10,1..10] of integer;

procedure input(var X:mas; var n:integer);
var i,j:integer;
begin
writeln(' Введите размер кв. матрицы: ');
readln(n);
writeln('введите кв. матрицу X');
for i:=1 to n do
for j:=1 to n do
read(X[i,j]);
end;

procedure f1(X:mas; n:integer; var max_i, ni:integer);
var i,j,si,sj:integer;
begin
   max_i:=x[1,1];
   ni:=1;
for i:=1 to n do
begin
   si:=0;
   for j:=1 to n do
      si:=si+x[i,j];
   if si > max_i then begin ni:=i;max_i:=si;end;
end;
end;

procedure f2(X:mas; n:integer; var max_j, nj:integer);
var i,j,sj:integer;
begin
   max_j:=x[1,1];
   nj:=1;
for j:=1 to n do
begin
   sj:=0;
   for i:=1 to n do
      sj:=sj+x[i,j];
   if sj > max_j then begin nj:=j;max_j:=sj;end;
end;
end;


procedure pr3(max_i,max_j:integer);
var i,j,si,sj,s,ni,nj:integer;
begin
if ni=nj then
begin
s:=max_i+max_j;
writeln('сумма эл-тов в строке = ',max_i);
writeln('сумма эл-тов в столбце = ',max_j);
writeln('сумма эл-тов в строке и столбце = ',s)
end else
begin
writeln('Номер строки с макс. суммой= ',ni,'; макс. сумма= ',max_i);
writeln('Номер столбца с макс. суммой= ',nj,'; макс. сумма= ',max_j);
end;
end;

var A:mas;
ni,nj,si,sj,i,j,n,s,max_i,max_j:integer;
begin
input(A,n);
f1(A,n,max_i,ni);
f2(A,n,max_j,nj);
pr3(max_i,max_j);
end.
Летучий_СкилетиК вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти номер столбца с мин. суммой положительный элементов. olegozavr Паскаль, Turbo Pascal, PascalABC.NET 1 18.01.2011 18:59
Задача: Найти количество всех 2K-значных счастливых билетов с суммой цифр, равной N. Lodyr Помощь студентам 7 04.01.2010 16:19
найти подпоследовательность из подряд идущих элементов с наибольшей суммой на С++ aj_tramp Помощь студентам 2 12.12.2008 08:57