пока l oop для суммы диагоналей в матрице - PullRequest
0 голосов
/ 13 апреля 2020

почему d1 оказывается равным 0 за все время, тогда как d2, в то время как l oop дает правильный ответ ??

#include <iostream>

using namespace std;

int main()
{
   int r, c, i, j, a[100][100], d1, d2;

   cout<<"Number of rows you want in the array";

   cin>>r;

   cout<<"Number of columns you want in the array";

   cin>>c;

   //**1) constructing the matrix

   for(i=0; i<r; i++){

      for(j=0; j<c; j++){  //**since the columns change while a particular row is filled

         cout<<"a["<<i<<"]["<<j<<"]::";

         cin>>a[i][j];
      }
   }


   cout<<"The matrix is displayed below\n";


   for(i=0; i<r; i++){

      for(j=0; j<c; j++){

         cout<<a[i][j]<<"    ";


      }
      cout<<"\n";
   }


   //**2) calculating the sum of the diagonals


   //** the matrix should be a square one otherwise this program won't be possible, not possible

   i=0;

   d1=0;


   if(i<r){//**Left to right: where the index of both, rows and columns remains the same

      i=j;

      d1 = d1 + a[i][j];

      i++;
   }

   cout<<"\n\t Sum of diagonals from left to right = "<<d1;

   j=0;

   i=r-1;

   d2=0;

   while(i>=0 && j<c){

      d2 = d2 + a[i][j];

      i--;

      j++;
   }


   cout<<"\n\t Sum of diagonals from right to left = "<<d2;




   return 0;
}

1 Ответ

0 голосов
/ 13 апреля 2020

Поскольку код, который вы предоставили, является беспорядком. Вот некоторый общий код, который суммирует диагонали матрицы.

Рассмотрим матрицу с индексом i для строки и j для столбца. Если матрица квадратная, то существует только одно решение, поэтому при i == j достаточно сказать

double sum_diag = 0;
size_t rows = 10;
size_t cols = 10;
double** matrix = (malloc ...);
for (size_t i = 0; i < rows; ++i)
    sum_diag += matrix[i][i];

для диагонали, идущей справа налево (не уверен, что это означает математически, если что-нибудь).

for (size_t j = 0; j < cols; ++j)
    sum_diag += matrix[j][cols-j-1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...