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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2008, 16:11   #1
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
Восклицание Матрица в Pascal

Дана квадратная матрица. Найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
W_P вне форума Ответить с цитированием
Старый 04.03.2008, 16:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Показывай как делаеш
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.03.2008, 16:25   #3
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
По умолчанию

я не знаю как сам алгоритм составить чтоб считал сумму по диагонали. Если просто типо сумму главной диагонали найти - то эт смогу а вот побочные хз как. Тем более если бы я знал что размерность матрицы всегда будет постоянной - то это как нибудь вручную написать можно чтоб сумму считал, но в цикле как это сделать не могу догнать.
W_P вне форума Ответить с цитированием
Старый 04.03.2008, 16:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если просто типо сумму главной диагонали найти - то эт смогу
Вот и начни с этого, ибо следующие диагонали получаются простым увеличение индекса на чегото там
Например
for i:=0 to 10 do a[i,i]:=0 - это по главной диагонали
for i:=0 to 10 do if (i<=10) then a[i,i+3]:=0;
- это по диагонали справа от нее на 3 шага, где a[10,10] - сама матрица
I'm learning to live...

Последний раз редактировалось Stilet; 04.03.2008 в 16:55.
Stilet вне форума Ответить с цитированием
Старый 04.03.2008, 17:46   #5
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
По умолчанию

Не получаетса никак всеравно...Не могу составить цикл. Там же идет постепенное увеличениие элементов - т.е. в первом столбце снизу идет диагональ из одного элемента, потом следующая диагональ из 2 элементов и тд. до главной, а потом от главной на понижение количества элементов.
Отпиши тут или кто нибудь другой, кто может сделать задачу.Код сам выложите, а то чет никак не могу сообразить...
W_P вне форума Ответить с цитированием
Старый 04.03.2008, 21:16   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот какой код я нацарапал. Может не идеальный, но работает, проверял все промежуточные итоги.
Код:
program matrica;
uses crt;
var n,i,j,k,l,m,max:integer;
    a:array[1..20,1..20]of integer;
    b,c:array[1..38]of integer;
begin
clrscr;
write('n=');readln(n);
randomize;
Writeln('Ishodnaja matrica:');
for i:=1 to n do
   begin
     for j:=1 to n do
         begin
           a[i,j]:=random(10);
           write(a[i,j]:3);
         end;
      writeln;
   end;
readln;
for l:=1 to n-1 do   //считаем суммы диагоналей выше главной
   begin
     for i:=1 to n-1 do
       begin
         for j:=2 to n do
         if j=i+l then
            begin
              b[l]:=b[l]+a[i,j]; //заносим их в массив
            end;
       end;
  end;
for l:=1 to n-1 do     //считаем суммы в диагоналях ниже главной
   begin
     for i:=2 to n do
       begin
         for j:=1 to n-1 do
         if j=i-l then
           begin
             c[l]:=c[l]+a[i,j];  //записываем их в массив
          end;
       end;
  end;
for i:=n to 2*n-2 do   //собираем два массива в один
b[i]:=c[i-n+1];
max:=b[1];
for i:=2 to n do
if b[i]>max then max:=b[i];  //находим максимум
writeln('max=',max);
readln;
end.
puporev вне форума Ответить с цитированием
Старый 04.03.2008, 23:51   #7
W_P
Пользователь
 
Регистрация: 27.12.2007
Сообщений: 36
По умолчанию

Спасибо большое! а то мне мозгов пока не хватает такие задачи решать.....
W_P вне форума Ответить с цитированием
Старый 05.03.2008, 05:51   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В строке 47 ошибка, нужно for i:=2 to 2*n-2 do
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ортонормированная матрица. Pascal Punk_tir Помощь студентам 8 02.05.2011 18:04
Матрица Droid Общие вопросы Delphi 7 06.05.2008 20:14
Матрица 11111 Помощь студентам 3 31.10.2007 18:20
матрица m4tr1x2222 Общие вопросы C/C++ 3 16.05.2007 08:07