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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 15:03   #1
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию [Pascal] найти сумму элементов лежащих ниже побочной диагонали

Задача: Дан массив, размерностью 5х5(квадратная матрица). найти сумму элементов лежащих ниже побочной диагонали.

Подскажите пожалуйста алгоритм...

Код:
Program p1;
uses crt;
var a:array[1..5,1..5] of integer;
      i,j:byte;
begin
writeln('vvedite elementi massiva:');
      For i:=1 to 5 do begin
          For j:=1 to 5 do
        readln(a[i,j]);
        end;
        ...
Рамик вне форума Ответить с цитированием
Старый 24.02.2009, 15:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кажись так:

if (5-j)<i then Этот элемент лежит ниже побочной диагонали.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2009, 15:15   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Такой цикл:
Код:
sum := 0;
for i:=1 to 5 do
 for j:=7-i to 5 do
  sum := sum + a[i,j];
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.02.2009, 16:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Sazary
В условиях автора упадет второй цикл на первом шаге, потому как 7-1=6, а массив до 5-ти.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2009, 16:28   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Stilet
В общем виде будет так:
Код:
sum := 0;
for i:=1 to n do
 for j:=n-i+2 to n do
  sum := sum + a[i,j];
Если написать j:=n-i+1, то в сумму будут также включены элементы самой побочной диагонали, а этого по условию не нужно.

А если считать при вводе (как вы написали), то условие будет такое:
Код:
if (6-j)<i
т.е. в общем виде:
Код:
if (n-j+1)<i
Пример:
Код:
Program p1;
uses crt;
const n=5;
var a:array[1..n,1..n] of integer;
      i,j:byte;
sum : integer;
begin
clrscr;
randomize;
writeln('vvedite elementi massiva:');
sum := 0;
For i:=1 to n do begin
 For j:=1 to n do
  begin
  a[i,j] := random(10);

  if (n-j+1)<i then
   begin
   TextColor(12);
   sum := sum + a[i,j];
   end
  else TextColor(8);
  write(a[i,j]:4);
  end;
 writeln;
 end;
writeln;

TextColor(15);
writeln('sum= ',sum);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 24.02.2009 в 16:42. Причина: Дополнил
Sazary вне форума Ответить с цитированием
Старый 24.02.2009, 16:41   #6
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

спасибо вам! все работает!
Sazary, не мог бы ты коментарий оставить к циклу со столбцами...
Рамик вне форума Ответить с цитированием
Старый 24.02.2009, 16:49   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Рамик Честно говоря, не знаю, что там можно прокомментировать )
А что непонятно?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.02.2009, 16:52   #8
Рамик
Студент
Форумчанин
 
Аватар для Рамик
 
Регистрация: 18.02.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Рамик Честно говоря, не знаю, что там можно прокомментировать )
А что непонятно?
"j:=5-i+2..." вот это не очень понял
Рамик вне форума Ответить с цитированием
Старый 24.02.2009, 17:09   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Для прохода по побочной диагонали нужен такой цикл (для примера, сумма элементов побочной диагонали):
Код:
for i:=1 to n do
 sum := sum + a[i, n-i+1];
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5




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

Для сравнения, для прохода по главной диагонали, цикл такой:
Код:
for i:=1 to n do
 sum := sum + a[i,i];
Даже не знаю, как это объяснить...
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.02.2009, 17:10   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Рамик
А это просто смещение отсчета. Начало отсчета смещается в конец твоей матрицы поскольку побочная диагональ как выше показано начинается с конечной колонки матрицы
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Вычислить сумму элементов матрицы, расположенные на главной диагонали и выше нее MariyaVo Паскаль, Turbo Pascal, PascalABC.NET 9 10.05.2009 21:19
Вычислить сумму элементов главной и побочной диагонали двумерного массива , найти среднее арифметическое neBu4kaMaXiM Помощь студентам 7 24.02.2009 15:58
Оптимизировать алгоритм вычисления сумм элементов главной и побочной диагонали в матрице - Delphi r9m Помощь студентам 5 04.02.2009 11:01
Дана матрица 9х9. В строках с отрицательными элементами на главной диагонали найти сумму, макс и мин DeVcheNka Помощь студентам 5 21.11.2008 07:46