Excelente, muchas gracias. Un error tonto, a ponerse los anteojos...
Otro detalle, para obtener la DIAGONAL PRINCIPAL, la sección del código debe quedar así:
void Diag (int a[TAM][TAM], int n, int d[TAM])
{
cout<<"Te voy a dar la diagonal principal: \n\n";
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
d[i]=a[i][i]; //<---CORRECCIÓN
}
Hola. Quiero saber cómo hacer para que se imprima la CANTIDAD de ELEMENTOS NULOS de la matriz pero SÓLO LOS QUE ESTÁN ARRIBA (por encima, sobre) de LA DIAGONAL PRINCIPAL.
#include <iostream>
using namespace std;
const int TAM=4;
int main()
{
int nonul=0;
int c=0;
int M[TAM][TAM]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int i,j;
//---------------------------------EL ERROR ESTÁ AQUÍ:
for (int i=0; i<=TAM-2; i++)
for (int j=1; j<=TAM-1; j++)
if(M[i][j]==0)
{
c++;
}
cout<<"nulos:"<<c<<endl;
}
"Creo" que es así:
for ( int j = i + 1 ; j <= TAM - 1 ; j++ )
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Aparte de lo ya comentado por leosansan otro cambio a realizar son eliminar las declaraciones:
int nonul=0;
// ...
int i,j;
Ya que no las utilizas en tu programa.
Y no es necesario utilizar "<= N - 1" cuando se puede utilizar con el mismo efecto "< N", con ese cambio los bucles terminan así:
for (int i = 0; i < TAM - 1; i++)
for (int j = i + 1; j < TAM; j++)
if (M[i][j] == 0)
c++;
cout << "nulos:" << c << endl;
Un saludo
Además te sobra:
int i,j;
toda vez que las declaras dentro de los for y no vas a hacer otro uso fuera de los mismas.
Y te falta el return 0 o similar de la función main. Ambas cosas tanto para este código como para el que pusiste en el otro tema anterior. ;)
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)