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;
}

1 Respuesta

Respuesta
1

Sin probarla, he visto unos cuantos fallos

En ingresarMatriz, la asignación de la matriz debe ser

cin>>a[j];

en sumaDiagonalPrincipal la suma debe ser

suma = suma + a; // a es un array bidimensional, no una variable

en sumaDiagonalSecundaria y en noSuma, la suma debe ser

suma = suma + a[j]; // de nuevo, problemas de indices

en noSuma, la declaración de variables queda como

int i, j, b;

y la condición para la suma debería ser

si i<>j and i+j<>n+1, es decir

if((i != j) && ((i + j) != (n -1)))

y en mostrarSumas, queda mas claro como

cout<<"La suma de los elementos de la diagonal principal es: "<<suma1<<endl;
cout <<"La suma de los elementos de la diagonal secundaria es: "<<suma2<<endl;
cout <<"La suma de los no elementos de la diagonal secundaria es: "<<suma3<<endl;
cout<<endl;

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas