Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/03/2016, 07:25
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
Gracias por la solucion, pero eso es lo que no se hacer... Como lo resuelvo?
  • Para recorrer el rango 1-10 necesitas un bucle.
  • Luego, dentro de dicho bucle, necesitas contar el número de repeticiones. Para almacenar dichas repeticiones necesitas un entero y para conocer el número de repeticiones necesitas recorrer el vector que ha rellenado el usuario (lo que consigues con otro bucle). En cada iteración de este segundo bucle, si el número que encuentras coincide con el que estás buscando incrementas la variable que cuenta las apariciones.
  • Para volcar el resultado por pantalla imagino que no necesita muchas explicaciones.

Cita:
Iniciado por elignah Ver Mensaje
Lo de define, si, ya me di cuenta, pero no forma parte del problema que tengo para resolver la consigna.
Si te centras únicamente en lo que te piden vas a coger malos hábitos. Es solo una sugerencia.

Cita:
Iniciado por elignah Ver Mensaje
Vengo al foro con el objetivo de aprender, de que me respondan dudas...
Hay un dicho que dice que si a un pobre le das un pescado comerá un día, pero que si lo enseñas a pescar podrá alimentarse el solo. Si yo cojo tu código lo arreglo y te planto la solución te estoy salvando el culo un día pero tu no vas a aprender absolutamente nada (créeme que se de lo que hablo). Necesitas aprender a pensar de una forma diferente a la habitual para poder programar y eso solo se consigue enfrentándose a los problemas. Yo te doy pistas para ayudarte a recorrer ese camino, pero lo demás es cosa tuya.

Cita:
Iniciado por elignah Ver Mensaje
Pero "n" la estoy usando en un for. Eso no hace que vaya revisando el vector y almacenando ahi? Tampoco lo entendi eso, estoy pidiendo una solucion, si no me la pueden dar diganme y listo... Vengo al foro con el objetivo de aprender, de que me respondan dudas...
Código C:
Ver original
  1. int vector[NUM_ELEMENTOS] = {1,2,1,5};
  2. int n;
  3. for(k=0;k<4;k++){
  4.     for(j=k+1;j<4;j++){
  5.         if (vector[k] == vector[j]){
  6.             n ++;
  7.            }
  8.     }
  9. }
  10.  
  11. for(i=0;i<4;i++){
  12. printf("Existen %i elementos del numero %i\n", n, vector[i]));
  13. }

Esto es lo que hace tu código:
  1. k=0
  2. j=k+1=0+1=1
  3. vector[k]=vector[0]=1, vector[j]=vector[1]=2, luego vector[k]!=vector[j]
  4. j=j+1=1+1=2
  5. vector[k]=vector[0]=1, vector[j]=vector[2]=1, luego vector[k]==vector[j]
  6. n=n+1=0+1=1
  7. vector[k]=vector[0]=1, vector[j]=vector[2]=5, luego vector[k]!=vector[j]
  8. k=k+1=0+1=1
  9. j=k+1=1+1=2
  10. vector[k]=vector[1]=2, vector[j]=vector[2]=1, luego vector[k]!=vector[j]
  11. j=j+1=2+1=3
  12. vector[k]=vector[1]=2, vector[j]=vector[3]=5, luego vector[k]!=vector[j]
  13. k=k+1=1+1=2
  14. j=k+1=2+1=3
  15. vector[k]=vector[1]=1, vector[j]=vector[3]=5, luego vector[k]!=vector[j]
  16. i=0, recordemos que n=1 y vector[i]=vector[0]=1
  17. print "Existen 1 elementos del numero 1"
  18. i=i+1=0+1=1, n=1, vector[i]=vector[1]=2
  19. print "Existen 1 elementos del numero 2" <-- MAL
  20. i=i+1=1+1=2, n=1, vector[i]=vector[2]=1
  21. print "Existen 1 elementos del numero 1" <-- OTRA VEZ???
  22. i=i+1=2+1=3, n=1, vector[i]=vector[3]=5
  23. print "Existen 1 elementos del numero 5" <-- MAL

Un entero únicamente puede almacenar un valor... tu estás intentando que almacene varios y ese concepto es erróneo. O conviertes n en un array o calculas el número de apariciones, las almacenas en n y para no perder el valor imprimes el resultado en ese mismo momento.

¿Lo ves más claro si lo pongo así?
  • bucle i=1...10
  • n=0
  • bucle j=0...NUM_ELEMENTOS-1
  • si i==vector[j], n++
  • fin bucle
  • El numero i se repite n veces
  • fin bucle
__________________
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.