Problema con un vector

Iniciado por Luchoz95, 2 Abril 2013, 08:28 AM

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

Luchoz95

Hola gente tengo el siguiente problema , miren este source:
#include <stdio.h>

int main()
{
int vectorr[4];
int i;
int a=1;
for(i=0;i<=4;i++)
{
     vectorr[i]=i;
     a++;

}
for(i=0;i<=4;i++)
{
      printf("Vector [%d] : %d\n",i,vectorr[i]);
}

}


me imprime lo sguiente .. :
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 ?

xustyx

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

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 (cpp) [Seleccionar]

for(i=0;i<=4;i++)
{
     vectorr[i]=a;
     a++;
}


Y la otra un poco mejor es no usar la variable a.
Código (cpp) [Seleccionar]

for(i=0;i<=4;i++)
{
     vectorr[i]=i+1;
}


do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Luchoz95

aah ahora entienedooo !! , entonces puede ser que el loco de este video este equivocado ? ...
[youtube=640,360]http://www.youtube.com/watch?v=RT1sdyQxXhg[/youtube]
porque dice que vector[4] tiene 5 lugares ... , esta mal lo que dice o no ?

rir3760

Cita de: Luchoz95 en  2 Abril 2013, 17:54 PMentonces 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í:
#include <stdio.h>

int main(void)
{
   int i;
   int a = 1;
   int vectorr[4];
   
   for (i = 0; i <= 4; i++){
      vectorr[i] = a;
      a++;
   }
   
   for (i = 0; i <= 4; i++)
      printf ("Vector [%d] : %d\n", i, vectorr[i]);
   
   return 0;
}


Despues de compilar con MS Visual C++ 2008 Express al ejecutarlo su salida es:
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
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