Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Luchoz95 en 2 Abril 2013, 08:28 am



Título: Problema con un vector
Publicado por: Luchoz95 en 2 Abril 2013, 08:28 am
Hola gente tengo el siguiente problema , miren este source:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int vectorr[4];
  6. int i;
  7. int a=1;
  8. for(i=0;i<=4;i++)
  9. {
  10.     vectorr[i]=i;
  11.     a++;
  12.  
  13. }
  14. for(i=0;i<=4;i++)
  15. {
  16.     printf("Vector [%d] : %d\n",i,vectorr[i]);
  17. }
  18.  
  19. }

me imprime lo sguiente .. :
Código:
Vector [0] : 1
Vector [1] : 2
Vector [2] : 3
Vector [3] : 4
Vector [4] : 6

el error esta en el vector 4 , tendria que haber un 5 como yo quiero , alguien me puede explicar que hago mal ?


Título: Re: Problema con un vector
Publicado por: xustyx en 2 Abril 2013, 09:19 am
No es que desarrolle en c++ pero por lo que veo el resultado no tendria ni que ser ese... xD

Para empezar esto te tendria que mostrar a mi entender :S
Código:
Vector [0] : 0
Vector [1] : 1
Vector [2] : 2
Vector [3] : 3
Vector [4] : 4

Aparte ese variable a no la usas para nada solo para incrementarla con lo qual no haces nada XD.

Tienes dos maneras de arreglarlo la primera es cambiar el primer bucle for por esto que es donde creo que te has equivocado.
Código
  1. for(i=0;i<=4;i++)
  2. {
  3.     vectorr[i]=a;
  4.     a++;
  5. }
  6.  

Y la otra un poco mejor es no usar la variable a.
Código
  1. for(i=0;i<=4;i++)
  2. {
  3.     vectorr[i]=i+1;
  4. }
  5.  


Título: Re: Problema con un vector
Publicado por: do-while en 2 Abril 2013, 11:50 am
¡Buenas!

Tambiñen te estas saliendo de rango. Si declaras tu vector con dimensión 4, solo tiene las posiciones 0, 1, 2 y 3. Si intentas acceder a la posición 4 te estas saliendo de la memoria asignada al vector y estarás accediendo a una posición de memoria que no sabemos que información ni que permisos tiene, así que acceder a esa posición incluso puede llegar a darte un error de ejecución (en el mejor de los casos, en el peor puedes estar sobreescribiendo valores de otras variable y obtener efector colaterales extraños)

¡Saludos!


Título: Re: Problema con un vector
Publicado por: Luchoz95 en 2 Abril 2013, 17:54 pm
aah ahora entienedooo !! , entonces puede ser que el loco de este video este equivocado ? ...
RT1sdyQxXhg
porque dice que vector[4] tiene 5 lugares ... , esta mal lo que dice o no ?


Título: Re: Problema con un vector
Publicado por: rir3760 en 2 Abril 2013, 18:32 pm
entonces puede ser que el loco de este video este equivocado ?
Correcto. Ese array tiene cuatro elementos.

Con el programa tal como esta (tu primer mensaje) no hay forma de obtener la salida que mencionas. Supongo lo modificaste y al ejecutarlo era mas o menos así:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.   int i;
  6.   int a = 1;
  7.   int vectorr[4];
  8.  
  9.   for (i = 0; i <= 4; i++){
  10.      vectorr[i] = a;
  11.      a++;
  12.   }
  13.  
  14.   for (i = 0; i <= 4; i++)
  15.      printf ("Vector [%d] : %d\n", i, vectorr[i]);
  16.  
  17.   return 0;
  18. }

Despues de compilar con MS Visual C++ 2008 Express al ejecutarlo su salida es:
Código:
Vector [0] : 1
Vector [1] : 2
Vector [2] : 3
Vector [3] : 4
Vector [4] : 6

Y con otros compiladores se puede obtener el mismo efecto cambiando el orden de las declaraciones.

Por ultimo si quieres aprender bien mejor consigue un buen libro (mas foros de soporte como este).

Un saludo