Obtener los valores nulos sobre la diagonal principal.(Array 2D)

Iniciado por mikem, 19 Octubre 2014, 14:30 PM

0 Miembros y 1 Visitante están viendo este tema.

mikem

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í:
Código (cpp) [Seleccionar]

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.
Código (cpp) [Seleccionar]

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

}

leosansan

"Creo" que es así:

Código (cpp) [Seleccionar]
for  ( int j = i + 1 ;  j <= TAM - 1 ;  j++ )

¡¡¡¡ Saluditos! ..... !!!!




rir3760

Aparte de lo ya comentado por leosansan otro cambio a realizar son eliminar las declaraciones:
Código (cpp) [Seleccionar]
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í:
Código (cpp) [Seleccionar]
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

leosansan

Además te sobra:

Código (cpp) [Seleccionar]
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! ..... !!!!