Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mikem en 19 Octubre 2014, 14:30 pm



Título: Obtener los valores nulos sobre la diagonal principal.(Array 2D)
Publicado por: mikem en 19 Octubre 2014, 14:30 pm
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
  1. void Diag (int a[TAM][TAM], int n, int d[TAM])
  2. {
  3. cout<<"Te voy a dar la diagonal principal: \n\n";
  4. for (int i=0; i<n; i++)
  5. for (int j=0; j<n; j++)
  6. d[i]=a[i][i]; //<---CORRECCIÓN
  7. }
  8.  



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
  1. #include <iostream>
  2. using namespace std;
  3. const int TAM=4;
  4. int main()
  5.  
  6. {
  7. int nonul=0;
  8. int c=0;
  9. int M[TAM][TAM]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  10.  
  11. int i,j;
  12. //---------------------------------EL ERROR ESTÁ AQUÍ:
  13.  for (int i=0; i<=TAM-2; i++)
  14.  for (int j=1; j<=TAM-1; j++)
  15.  if(M[i][j]==0)
  16.  {
  17. c++;
  18. }
  19. cout<<"nulos:"<<c<<endl;
  20.  
  21. }


Título: Re: Obtener los valores nulos sobre la diagonal principal.(Array 2D)
Publicado por: leosansan en 19 Octubre 2014, 15:20 pm
"Creo" que es así:
 
Código
  1. for  ( int j = i + 1 ;  j <= TAM - 1 ;  j++ )

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


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)



Título: Re: Obtener los valores nulos sobre la diagonal principal.(Array 2D)
Publicado por: rir3760 en 19 Octubre 2014, 16:15 pm
Aparte de lo ya comentado por leosansan otro cambio a realizar son eliminar las declaraciones:
Código
  1. int nonul=0;
  2.  
  3. // ...
  4.  
  5. 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
  1. for (int i = 0; i < TAM - 1; i++)
  2.   for (int j = i + 1; j < TAM; j++)
  3.      if (M[i][j] == 0)
  4.         c++;
  5. cout << "nulos:" << c << endl;

Un saludo


Título: Re: Obtener los valores nulos sobre la diagonal principal.(Array 2D)
Publicado por: leosansan en 19 Octubre 2014, 18:26 pm
Además te sobra:

Código
  1. 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)