Maquina de dulces no da cambio

Iniciado por phooeenix, 1 Enero 2017, 00:28 AM

0 Miembros y 1 Visitante están viendo este tema.

phooeenix

Resulta que estoy programando una maquina expendedora de golosinas y todo iba muy bien hasta que me vi en el problema de que no da cambio, les explico su funcionamiento:

Al ejecutar el programa te pide un deposito inicial, al ingresar tu deposito se despliegan las categorias de las golosinas almacenadas, al seleccionar la categoria se desprenden los productos los cuales puedes adquirir, hasta aqui no hay ningun porblema puesto que si el usuario hace un deposito mayor al precio le devuelve el cambio, lo que sucede es cuando el usuario al inicio no deposita el dinero suficiente, desde aqui el programa te empieza a pedir el dinero que falta y cuando detecta que has completado el precio deja caer el producto, el problema empieza cuando el usuario deposita mas dinero que el faltante, es ahi cuando mi programa no da cambio,

ejemplo:
al comprar unas papas fritas estas tienen un costo de $12, como usuario solo deposite $10 el programa me pide depositar lo faltante de lo contrario no me dara mi golosina, yo como usuario solo tengo monedas de $5 y cuando lo deposite la maquina me debe regresar $3, es ahi cuando empieza el problema puesto que el programa se cobra lo restante para completar el precio pero no devuelve lo que le sobro.

Me gustaria que me apoyen en cuanto a ese problema, en verdad se los agradeceria mucho

Les dejo un pequeño ejemplo de mi programa

Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>

using namespace std;

/* */

int main(int argc, char *argv[]) {

int deposito;
int precio;
int cambio;
int falto;
int dep2;
int mone;

cout<<"precio: ";
cin>>precio;

cout<<"deposito: ";
cin>>deposito;

if(deposito>precio){
cambio= deposito-precio;
cout<<"Tu cambio es: $"<<cambio<<endl;
}

if(deposito<precio){
falto=precio-deposito;
cout<<"Deposito insuficiente.."<<endl;

while(falto>0){
cout<<"Deposita $"<<falto;
cout<<"\n$";
cin>>dep2;
falto= falto-dep2;
}

if(falto==0){
cout<<"Gracias por su compra"<<endl;
}

}

if(deposito==precio){
cout<<"Gracias por su compra"<<endl;
}

system ("PAUSE");
return EXIT_SUCCESS;
}

engel lex

si ingresas en el while estará ahi hasta que falto sea mayor que 0, cuando es sale del while y continua

para arreglar de una forma simple, has un falto < 0 debajo del while... eso debería resolver tus problemas
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.