¿Cuantas veces tienes ese 4 repetido en el código? Unas cuantas, ¿verdad? Y si de repente quieres cambiar de 4 a 10 o te aseguras de cambiar el valor en todos los sitios o el programa va a funcionar mal.
Para evitar eso hay una buena costumbre que puedes ir adquiriendo y es la de usar valores constantes. La idea es definir el valor una sola vez y reutilizarla tantas veces como sea necesario. Así, si dicho valor cambia únicamente hay que tocar en un sitio y el programa es más sencillo de mantener y se generan menos errores.
La forma clásica de hacer esto en C es usando #define de la siguiente forma:
Código C:
Ver original// después de esta línea puedes usar NUM_ELEMENTOS
// en sustitución del 4
#define NUM_ELEMENTOS 4
int vector[NUM_ELEMENTOS];
for(i=0;i<NUM_ELEMENTOS;i++)
// ...
Y ahora, hablando de tu problema, si te fijas en el código que has puesto:
Código C:
Ver originalfor(k=0;k<4;k++){
for(j=k+1;j<4;j++){
if (vector[k] == vector[j]){
n ++;
}
}
}
¿Que crees que hace ese código? n es un entero, luego únicamente puede almacenar un valor, sin embargo tú la estás usando para memorizar las apariciones de todos los números... Algo no cuadra.
Para resolver tu programa puedes aplicar dos soluciones diferentes:
- Una pasa por recorrer el rango 1-10 y, en cada iteración, calculas el número de veces que se repite el número dado. Una vez realizado el cálculo imprimes el resultado en la pantalla.
- La segunda posibilidad es similar a la primera, sólo que en vez de volcar el resultado sobre la marcha almacenas dicho resultado en otro vector (necesitas dos, uno para los números del usuario y otro para almacenar las apariciones). Después de haber calculado todas las apariciones recorres el vector de apariciones y vuelcas su contenido a la pantalla.
Un saludo.