Ver Mensaje Individual
  #8 (permalink)  
Antiguo 21/03/2016, 15:09
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Ejercicio de vectores que no me sale. Quien me da una mano? soy nuevo

Cita:
Iniciado por elignah Ver Mensaje
Tengo una duda que no puedo comprender, y es en este paso:

Código C:
Ver original
  1. printf("El numero %i se repite %i veces\n", vector[NUM_ELEMENTOS], n);

Estoy pidiendo que me imprima vector[NUM_ELEMENTOS] y, en vez de eso, me imprime k (del 0 al 9)! No entiendo por que!!!
Si tu declaras un array tal que

Código C:
Ver original
  1. int vector[NUM_ELEMENTOS];

entonces reservas un espacio de NUM_ELEMENTOS de tipo entero que van a estar consecutivos. La primera posición del array viene dada por el índice 0 y la última por el índice NUM_ELEMENTOS-1, por lo que vector[NUM_ELEMENTOS] es un acceso no válido... no estás accediendo al array sino a otra cosa.

Si abrimos un poco las miras tenemos:

Código C:
Ver original
  1. int vector[NUM_ELEMENTOS] = {1,2,1,5};
  2. int j,i,n,k;

Todas estas variables puedne estar en la pila del programa pues son variables locales (el que estén o no depende finalmente de las optimizaciones del compilador). Normalmente el compilador procesa los parámetros de derecha a izquierda. Esto quiere decir que una vez ubicado el array en la pila el siguiente elemento puede ser k, después n, i y, finalmente, j. Si accedes a vector[NUM_ELEMENTOS] puede que leas el valor de k, si accedes a vector[NUM_ELEMENTOS+1] puede que leas el valor de n y así.

En cualquier caso yo procuraría, por el bien de tu programa, poner especial cuidado en no leer fuera de un array.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.