este problemita de c++ no funciona bien

Iniciado por swagger14, 19 Mayo 2012, 21:35 PM

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

swagger14

lo que quiero hacer o termina es
elaborar un programa que reciba una cantidad de dinero y retorne la cantidad óptima para cambiar dicho dinero. La idea es cambiar el monto total usando la menor cantidad de papeletas posibles.

Ejemplo 2,500.00 debería retorna 1 papeleta de 2000 y 1 papeleta de quinientos.

3,455.00
1 de 2000
2 de 200
1 de 50
1 de 5
#include<iostream>

using namespace std;



int main()
{
    unsigned int cant,x;
 
    cout<<"cantidad de papeleta o monedas devolver"<<endl;
    cout<<"digite cantidad a cambiar "<<endl;
    cin>>cant;
    x=cant/2000;
    cant=cant-cant /2000;
    cout<<"billetes de 2000"<< "\n\n"<<x<<endl;
    x=cant/1000;
    cant=cant-cant /1000;
    cout<<"billetes de 1000"<< "\n\n"<<x<<endl;
    x=cant/500;
    cant=cant-cant/500;
    cout<<"billetes de 500"<< "\n\n"<<x<<endl;
    x=cant/200;
    cant=cant-cant /200;
    cout<<"billetes de 200"<< "\n\n"<<x<<endl;
    x=cant/100;
    cant=cant-cant/100;
    cout<<"billetes de 100"<< "\n\n"<<x<<endl;
    x=cant/50;
    cant=cant-cant/50;
    cout<<"billetes de 50"<< "\n\n"<<x<<endl;
    x=cant/25;
    cant=cant-cant/25;
    cout<<"billetes de 25"<< "\n\n"<<x<<endl;
    x=cant/20;
    cant=cant-cant-20;
    cout<<"billetes de 20"<< "\n\n"<<x<<endl;
    x=cant/10;
    cant=cant-cant/10;
    cout<<"monedas de 10"<< "\n\n"<<x<<endl;
    x=cant/5;
    cant=cant-cant/5;
    cout<<"monedas de 5"<< "\n\n"<<x<<endl;
    x=cant=cant-cant/1;
    cout<<"monedas de 1"<< "\n\n"<<x<<endl;
   
    system ("pause");
    return 0;
   
}

tremolero

Hola swagger14, tal vez no sea el mas idoneo para hablar, pero mi intencion es ayudarte xD y este lenguaje... no me acuerdo ni de como funciona xD

Pero lo primero, has comentado que pretendes que haga el programa y has puesto tu codigo, hasta ahi estupendo, pero no has dicho cual es el problema que tienes :S

Y por lo que he visto, a mi me genera dudas lo que estas realizando:
cant=cant-cant/2000; <---- eso para mi, no tiene mucho sentido, tal vez este yo equivocado.

Sino me equivoco, creo que lo que tienes que hacer es dividir tu cantidad entre el billete en este caso 2000, y luego tambien sacarle el resto, para continuar con la operacion.

ej: y=cant/2000; Y=es la cantidad de billetes de 2000 que entregas. y luego tendrias que sacar el resto, en este lenguaje no recuerdo como es, pero te pongo un ejemplo.

resto=cant\2000; en algunos lenguajes el resto se saca con la barra al contrario en otros con el %, etc... y una vez tienes el resto, continuas con los demas billetes y monedas, trabajando con el resto, ya que es lo que te falta por entregar.

Perdon por extenderme y espero haberte ayudado.


Saludos.

exel

#2
 Creo que tu problema esta en la diferencia, por ejemplo:
x=cant/2000;
cant=cant-cant /2000;


En vez de eso, debes hacer esto:
x=cant/2000;
cant=cant-x*2000;


Eso para todas las operaciones analogas.

Saludos

swagger14

pues gracias exel  el problema esta en q no me dice exactamente al cantidad de monedas o billetes que requiero

aun con las correpciones que me das 
y si en este lenguaje el  operador residuo  es (%)
no se que mas  hago mal

exel

Y si sustituyes las salidas como
cout<<"billetes de 2000"<< "\n\n"<<x<<endl

por
cout<<x<<" billetes de 2000"<< "\n\n"<<endl;

?

Si quieres contar la cantidad total de papeletas pues almacenas en otra varible los valores que obtengas de x