elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema c++  (Leído 2,388 veces)
silsen11

Desconectado Desconectado

Mensajes: 1


Ver Perfil
problema c++
« en: 11 Mayo 2015, 07:49 am »

como puedo hacer este codigo

buenas  amigos me mandaron esto como puedo hacerlo o como es el codigo en  c]++ o java  Dado un sistema monetario S de longitud K y una cantidad de cambio C, devolver una solución (si existe) que nos indique el número de monedas de S equivalente a C, es decir, que nos muestre el cambio para C a partir de monedas de S.

Un sistema monetario que contiene monedas de valor 10, 6, 5 y 1. La cantidad que debemos cambiar es C=12. El algoritmo voraz siempre intentará realizar el cambio mediante monedas del mayor valor posible. Si en algún paso C es menor estricto que S[t] (t≤K), se incrementará t y repetiremos el mismo pasó para la siguiente moneda de S. Al finalizar, el algoritmo voraz nos indica que el cambio resultante para 12 son dos monedas de 1 y una de 10. Cómo he comentado al principio los algoritmos voraces en muchas ocasiones no presentan la mejor solución, pues en éste ejemplo sería mejor cambiar 12 por dos monedas de 6, entendiendo por mejor solución devolver el menor número de monedas posibles.

El esquema básico de un algoritmo voraz:
Clase EsquemaVoraz
proc voraz()
    alg
       inicializa()
       mientras (No fin())
seleccionaYElimina()
si (prometedor()):
   anotaEnSolucion()
fsi
      fmientras
   fin


Solución del Ejemplo

Clase CambiodeMonedas hereda EsquemaVoraz
m: array[1..n] de Entero
c: Entero
k: Entero
sol: array[1..n] de Entero
            proc inicializa()
    alg
       sol:=
       k:=0
    fin         
func fin() dev (b: Lógico)
    alg
       b:=((k=n) ó (c=0))
    fin           
proc seleccionaYElimina()
    alg
       k:=k+1
    fin           
func prometedor() dev (b: Lógico)
    alg
       b:=(m[k]


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: problema c++
« Respuesta #1 en: 11 Mayo 2015, 08:03 am »

este tema ya ha sido respondido, con "algoritmo de cajero automatico" y similares... no te vamos a dar el codigo hecho, podemos ayudarte con las dudas

basicamente resuelves con un while por cada denominación de mayor a menor

ejemplo, si son billetes de 20, 50 y 100, y tienes que cobrar 250

Código:
250 mayor o igual que 100? 
si -> agregar un billete de 100
restar 100 a 250
150 mayor o igual que 100?
si -> agregar un billete de 100
restar 100 a 150
50 mayor o igual que 50?
restar 50 a 50
0 mayor o igual que 50?
no
0 mayor o igual que 20?
no
son 2 billetes de 100 y 1 de 50
50 mayor o igual que 100?

Tu otro tema fue borrado... no hagas doble post, ni invadas post de otros


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,351 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
[Duda y problema] Tengo un problema « 1 2 »
Windows
Killer2812 16 14,089 Último mensaje 26 Marzo 2015, 06:21 am
por scott_
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines