Foros del Web » Programando para Internet » Ruby »

[SOLUCIONADO] Duda en duplicar

Estas en el tema de Duda en duplicar en el foro de Ruby en Foros del Web. Amigos, Estoy tratando de resolver un ejercicio, cuando hago un recorrido en cada cadena en un arreglo, por ejemplo a = [1,1,1,1,4,3,5,9], cuenta los numeros ...
  #1 (permalink)  
Antiguo 09/10/2014, 20:43
 
Fecha de Ingreso: agosto-2014
Mensajes: 68
Antigüedad: 9 años, 11 meses
Puntos: 1
Duda en duplicar

Amigos,
Estoy tratando de resolver un ejercicio, cuando hago un recorrido en cada cadena en un arreglo, por ejemplo a = [1,1,1,1,4,3,5,9], cuenta los numeros que estan duplicada por ejemplo el numero 1, la cantidad de duplicado del numero 1 es 4. eso se hace con for y un contador. ahora bien, lo que trato es que no me salga la cantidad de duplicado (cadena). solamente que salga el numero 1 . igualmente para otro ejemplo de arreglo b = [1,2,3,4,5], en este arreglo no hay duplicado saldria 0. otro ejemplo c = [7,2,4,5,4,6,4] en este caso hay 3 duplicado del numero cuatro, en lo cual deberia salir 4.
le paso el codigo si me puedes apoyar en que esta mal.
Código ruby:
Ver original
  1. #encoding:UTF-8
  2. =begin
  3. Una empresa de maquinas tragamonedas desea poder determinar cual es el premio asignado a un cliente.
  4. Para ello se le solicita desarrollar los siguientes subprogramas:
  5.  
  6. a) Un subprograma que permita determinar cuantas veces apareció un digito en un número determinado.
  7. Se tiene como datos de entrada el número y el digito. Por ejemplo, si el numero es 1234 y el digito es 5,
  8. se obtendrá como resultado 0; si el numero es 12344 y el digito es 4, se obtendrá como resultado 2.
  9.  
  10. b) Un subprograma que permita determinar cual es el digito que apareció 2 o mas veces en un número.
  11. Se tiene como dato de entrada un número. Por ejemplo, si el numero es 1234 se obtendrá como resultado 0
  12. pues ningún numero aparece mas de 2 veces, si el numero es 77093 se obtendrá como resultado 7.
  13. (Considerar que no puede haber 2 o mas coincidencias de distintos números, es decir no se puede dar el caso 7766,
  14.  en donde se repite 2 veces el 7 y 2 veces el 6)
  15.  
  16. c) Un subprograma que permita determinar el premio a pagar. El premio se calcula de la siguiente manera:
  17. premio = numeroCoincidencias*10. En donde el número de coincidencias es el máximo número de veces que se
  18. repite un digito en el numero.
  19.  
  20. Nota: Para la formación del numero se considera dígitos del 1 al 9, se excluye el 0, es decir no se puede
  21. dar el siguiente numero 1002, pues el 0 esta excluido.
  22. =end
  23. def obtenerNumeroCoincidencias(valor, cifra)
  24.     valor_cadena = valor.to_s
  25.     cifra_cadena = cifra.to_s
  26.     coincidencia = 0
  27.     for a in 0...valor_cadena.size
  28.         if valor_cadena[a] == cifra_cadena
  29.             coincidencia = coincidencia + 1
  30.         end
  31.     end
  32.     return coincidencia
  33. end
  34.  
  35. def obtenerNumeroMasRepite(valor)
  36.     cadena = valor.to_s
  37.     ultimo = []
  38.     contador = 0
  39.     for i in 0...cadena.size   
  40.         ultimo << cadena[i]
  41.     end
  42.  
  43.     numero = ultimo.first
  44.     for j in 0...cadena.size
  45.         if cadena[j] == numero
  46.             numero = cadena[j]
  47.         else
  48.             numero = 0
  49.         end
  50.     end
  51.     return numero
  52. end
  53.  
  54. def obtenerPremio(valor)
  55.     total_valor = obtenerNumeroMasRepite(valor)
  56.     return total_valor.to_i * 10
  57. end
  58.  
  59. #--- zona del programa principal ----
  60.  
  61. #--- zona de test ----
  62.  
  63. def test_obtenerNumeroCoincidencias
  64.     print validate(3, obtenerNumeroCoincidencias(6661,6))
  65.     print validate(0, obtenerNumeroCoincidencias(1234,5))  
  66.     print validate(2, obtenerNumeroCoincidencias(7881,8))    
  67.     print validate(1, obtenerNumeroCoincidencias(7861,8))    
  68. end
  69.  
  70. def test_obtenerNumeroMasRepite
  71.     print validate(2, obtenerNumeroMasRepite(122234))
  72.     print validate(7, obtenerNumeroMasRepite(76713))
  73.     print validate(0, obtenerNumeroMasRepite(123456))
  74.     print validate(9, obtenerNumeroMasRepite(999999))
  75. end
  76.  
  77. def test_obtenerPremio
  78.     print validate(0, obtenerPremio(123456))
  79.     print validate(30, obtenerPremio(122324))
  80.     print validate(50, obtenerPremio(199999))
  81.     print validate(60, obtenerPremio(111111))
  82. end
  83.  
  84. def validate (expected, value)
  85.  expected == value ? "." : "F"
  86. end
  87.  
  88. def test
  89.    
  90.   puts "Test de prueba del programa"
  91.   puts "---------------------------"
  92.   test_obtenerNumeroCoincidencias
  93.   test_obtenerNumeroMasRepite
  94.   test_obtenerPremio
  95.   puts " "
  96. end
  97. test
  #2 (permalink)  
Antiguo 10/10/2014, 12:13
 
Fecha de Ingreso: agosto-2014
Mensajes: 68
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Duda en duplicar

Gracias por la ayuda.
  #3 (permalink)  
Antiguo 10/10/2014, 16:14
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años
Puntos: 2114
Respuesta: Duda en duplicar

No se suelen hacer tareas ajenas aquí.
__________________
(:
  #4 (permalink)  
Antiguo 10/10/2014, 21:19
 
Fecha de Ingreso: agosto-2014
Mensajes: 68
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Duda en duplicar

Mira Pzin
Si te molesta que yo publique un codigo donde salen errores, NO LO MIRES, Y NO HAGAS TIPO DE COMENTARIO ESTUPIDA EN EL FORO y ademas no es una tarea, es ejercicio para practicar y entender como debe funcionar en el programa ruby en diferentes metodos.
Yo soy aqui para aprender a los demas colegas que son expertos en Ruby. y tengo ganas de aprender y me gusta programar como los demas. Me gusta escuchar las opiniones de los demas "lo que debe hacer y que no debe hacer".
Si te crees la gran cagada en Ruby. Te felicito, no te pedi opinion. Si tu estuviera un hijo que quiere aprender ruby y pide ayuda en el Foro, que harias.. Me pongo en tu lugar lo mando a la mierda. Estas fuera de lugar. Me encantaria ayudar a cualquier persona en el mundo de habla hispana.
Espero que no vuelvas a contestar, si te atreves con gusto lo hago.
  #5 (permalink)  
Antiguo 11/10/2014, 01:17
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años
Puntos: 2114
Respuesta: Duda en duplicar

Tiene toda la pinta de ser una tarea de clase y por lo general, además de por cuestiones éticas (para los demás) y funcionales (para ti), no se suelen resolver tales tareas en el foro, ya que no es el lugar correcto para ello.

Igual deberías de cambiar un poco la forma en que respondes y no elaborar tanta respuesta en base a una frase. Sobre todo si la entonación tiende más hacia lo negtivo. Hay demasiadas suposiciones gratuitas ahí. Recuerda también que hay normas aquí.
__________________
(:
  #6 (permalink)  
Antiguo 11/10/2014, 07:52
 
Fecha de Ingreso: agosto-2014
Mensajes: 68
Antigüedad: 9 años, 11 meses
Puntos: 1
Respuesta: Duda en duplicar

Pzin
Cual es el problema si es una tarea de la universidad o de un instituto. Aca estamos para colaborar. ademas si yo fuera pinta de ser tarea de clase, ya hubiera publicado miles de tareas para que me resuelve, asi de simple. me raspo la barriga sin hacer nada. No seas tan m...!!! yo publicaria lo necesario que no logro entender, por ejemplo en una oportunidad anterior hice una consulta y me contesto abimex, y me ayudo bastante a abrir el punto clave de ruby como join o collect o otro comando que nunca lo habia visto, ni siquiera esta en los libros, para mi es impresionante que los demas expertos en ruby puedan hacer con una sola linea en la programacion en vez de hacer mas linea como java, c.
Te vuelvo a decir si te molesta que yo publique unos ejercicios en ruby , no comentas, pasalo a un lado, deja que los demas que tenga la voluntad de contestar que lo hagan.
Mira Pzin, a mi no me interesa si me elimina del foro por mis insultos. Me importa dos huevos. Ojala que lo entiendas, aca estamos para aprender y compartir ideas.

Etiquetas: duplicar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.