Ejercicio de c++ desarrollado con dev c++
Estoy haciendo el siguiente programa que me permite sumar la diagonal principal, diagonal secundaria de una matriz cuadrada, tengo una función noSuma que debería sumar la matriz a excepción de la diagonal principal y la diagonal secundaria, pero no me esta dando el resultado deseado, no se que estaré haciendo mal en la función noSuma, haber si me das una mano estoy empezando en esto de c++. Gracias de antemano.
#include <cstdlib>
#include <iostream>
#include <iomanip>
void ingresarMatriz (int a[50][50], int &n);
void sumaDiagonalPrincipal(int a[50][50], int n, int &suma);
void sumaDiagonalSecundaria(int a[50][50], int n, int &suma);
void noSuma(int a[50][50], int n, int &suma);
void mostrarSumas(int suma1, int suma2, int suma3);
//int i,j
using namespace std;
int main(int argc, char *argv[])
{
//Definir e inicializar variables y matrices
int filacol, a[50][50], sp = 0, ss = 0 , ns = 0;
ingresarMatriz(a, filacol);
sumaDiagonalPrincipal(a, filacol, sp);
sumaDiagonalSecundaria(a, filacol, ss);
noSuma(a, filacol, ns);
mostrarSumas(sp,ss,ns);
system("PAUSE");
return EXIT_SUCCESS;
}
void ingresarMatriz(int a[50][50], int &n)
{
int i, j;
cout<<"Ingresar tamaño de la matriz: ";
cin>>n;
for(i =0;i < n;i++)
{
for(j =0;j < n;j++)
{
cout<<"Ingresar elemento: ";
cin>>a[j];
}
}
}
void sumaDiagonalPrincipal(int a[50][50], int n, int &suma)
{
int i;
for(i = 0;i < n;i++)
suma = suma + a;
}
void sumaDiagonalSecundaria(int a[50][50], int n, int &suma)
{
int i, j = n - 1;
for(i =0;i < n;i++)
{
suma = suma + a[j];
j--;
}
}
void noSuma(int a[50][50], int n, int &suma)
{
int i, j, b = a;
for(i =0;i < n;i++)
{
for (j = 0; j < n; j++ )
{
//if((i = n - 1) || (j = n - 1))
if((i != b) || (j != b ))
suma = suma + a[j];
//j--;
}
}
}
void mostrarSumas(int suma1, int suma2, int suma3)
{
cout<<"La suma de los elementos de la diagonal principal es: "<<suma1<<endl
<<"La suma de los elementos de la diagonal secundaria es: "<<suma2<<endl
<<"La suma de los no elementos de la diagonal secundaria es: "<<suma3<<endl;
cout<<endl;
}