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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2010, 21:14   #1
armref
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 10
По умолчанию Побочная диагональ в матрице

Дана матрицы А размерности N*N. Найти сумму положительных элементов нижнего треугольника матрицы относительно побочной диагонали.

Вот код, но почему-то считает не все элементы. Не могу найти ошибку. Please, помогите

Код:
#include<iostream>
using namespace std;
int main()
{
 int n=100,i,j;
 int a[100][100];
 cin>>n;
 int sum=0;
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
  {
   cin>>a[i][j];
   }
  for(i=0;i<n;i++)
	  for( j=0;j<n;j++)
	  {
         if(i+j<=n-1 && a[i][j]>0)
           sum+=a[i][j];
	  }
  cout<<sum;
  return 0;
}
armref вне форума Ответить с цитированием
Старый 27.01.2010, 22:25   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Почему, работая с треугольными матрицами, здесь так любят перелопачивать и заведомо ненужную половину пар индексов, вместо того чтобы ходить только по нужному "треугольнику"?..
Код:
...
for ( i=0; i<n; i++ ) {
   for ( j=n-i-1; j<n; j++ ) {
       if ( a[i][j]>0 )
          sum+=a[i][j];   
   }
}
...
Vago вне форума Ответить с цитированием
Старый 28.01.2010, 12:24   #3
armref
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Почему, работая с треугольными матрицами, здесь так любят перелопачивать и заведомо ненужную половину пар индексов, вместо того чтобы ходить только по нужному "треугольнику"?..
Код:
...
for ( i=0; i<n; i++ ) {
   for ( j=n-i-1; j<n; j++ ) {
       if ( a[i][j]>0 )
          sum+=a[i][j];   
   }
}
...
так считате сумму всех элементов матрицы.
armref вне форума Ответить с цитированием
Старый 28.01.2010, 13:14   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Повторяю ещё раз.
Код:
#include <stdio.h>

int main(void) {

   const int n = 3;
   int a[n][n] = {1,1,1,2,2,2,3,3,3};
   int   i, j,
         sum = 0;

   for ( i=0; i<n; i++ ) {
      for ( j=n-i-1; j<n; j++ ) {
         if ( a[i][j]>0 )
            sum+=a[i][j];   
      }
   }

   printf( "%d\n", sum );

   return 0;

}
added 13:27 CET
Пардон, n в одном регистре везде должно быть.

Последний раз редактировалось Vago; 28.01.2010 в 15:27.
Vago вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диагональ матрицы Pecherni Общие вопросы C/C++ 2 16.03.2009 17:47
Побочная диагональ. Сортировка dido171 Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2008 13:32
[qBasic]Главная диагональ, прошу помощи toyvo14 Помощь студентам 2 15.12.2008 22:10
Диагональ монитора. Levsha100 Помощь студентам 3 08.12.2008 23:52
Вопрос: Побочная диагональ матрицы в С++ john350 Помощь студентам 4 16.03.2008 22:19