Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/03/2016, 12:18
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Ejercicio de vectores que no me sale. Quien me da una mano? soy nuevo

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

¿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
  1. // después de esta línea puedes usar NUM_ELEMENTOS
  2. // en sustitución del 4
  3. #define NUM_ELEMENTOS 4
  4.  
  5. int vector[NUM_ELEMENTOS];
  6.  
  7. for(i=0;i<NUM_ELEMENTOS;i++)
  8. // ...

Y ahora, hablando de tu problema, si te fijas en el código que has puesto:


Código C:
Ver original
  1. for(k=0;k<4;k++){
  2.     for(j=k+1;j<4;j++){
  3.         if (vector[k] == vector[j]){
  4.             n ++;
  5.            }
  6.     }
  7. }

¿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.
__________________
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.