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#encoding:UTF-8
=begin
Una empresa de maquinas tragamonedas desea poder determinar cual es el premio asignado a un cliente.
Para ello se le solicita desarrollar los siguientes subprogramas:
a) Un subprograma que permita determinar cuantas veces apareció un digito en un número determinado.
Se tiene como datos de entrada el número y el digito. Por ejemplo, si el numero es 1234 y el digito es 5,
se obtendrá como resultado 0; si el numero es 12344 y el digito es 4, se obtendrá como resultado 2.
b) Un subprograma que permita determinar cual es el digito que apareció 2 o mas veces en un número.
Se tiene como dato de entrada un número. Por ejemplo, si el numero es 1234 se obtendrá como resultado 0
pues ningún numero aparece mas de 2 veces, si el numero es 77093 se obtendrá como resultado 7.
(Considerar que no puede haber 2 o mas coincidencias de distintos números, es decir no se puede dar el caso 7766,
en donde se repite 2 veces el 7 y 2 veces el 6)
c) Un subprograma que permita determinar el premio a pagar. El premio se calcula de la siguiente manera:
premio = numeroCoincidencias*10. En donde el número de coincidencias es el máximo número de veces que se
repite un digito en el numero.
Nota: Para la formación del numero se considera dígitos del 1 al 9, se excluye el 0, es decir no se puede
dar el siguiente numero 1002, pues el 0 esta excluido.
=end
def obtenerNumeroCoincidencias(valor, cifra)
valor_cadena = valor.to_s
cifra_cadena = cifra.to_s
coincidencia = 0
for a in 0...valor_cadena.size
if valor_cadena[a] == cifra_cadena
coincidencia = coincidencia + 1
end
end
return coincidencia
end
def obtenerNumeroMasRepite(valor)
cadena = valor.to_s
ultimo = []
contador = 0
for i in 0...cadena.size
ultimo << cadena[i]
end
numero = ultimo.first
for j in 0...cadena.size
if cadena[j] == numero
numero = cadena[j]
else
numero = 0
end
end
return numero
end
def obtenerPremio(valor)
total_valor = obtenerNumeroMasRepite(valor)
return total_valor.to_i * 10
end
#--- zona del programa principal ----
#--- zona de test ----
def test_obtenerNumeroCoincidencias
print validate(3, obtenerNumeroCoincidencias(6661,6))
print validate(0, obtenerNumeroCoincidencias(1234,5))
print validate(2, obtenerNumeroCoincidencias(7881,8))
print validate(1, obtenerNumeroCoincidencias(7861,8))
end
def test_obtenerNumeroMasRepite
print validate(2, obtenerNumeroMasRepite(122234))
print validate(7, obtenerNumeroMasRepite(76713))
print validate(0, obtenerNumeroMasRepite(123456))
print validate(9, obtenerNumeroMasRepite(999999))
end
def test_obtenerPremio
print validate(0, obtenerPremio(123456))
print validate(30, obtenerPremio(122324))
print validate(50, obtenerPremio(199999))
print validate(60, obtenerPremio(111111))
end
def validate (expected, value)
expected == value ? "." : "F"
end
def test
puts "Test de prueba del programa"
puts "---------------------------"
test_obtenerNumeroCoincidencias
test_obtenerNumeroMasRepite
test_obtenerPremio
puts " "
end
test