Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: swagger14 en 19 Mayo 2012, 21:35 pm



Título: este problemita de c++ no funciona bien
Publicado por: swagger14 en 19 Mayo 2012, 21:35 pm
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
Código:
#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;
   
}


Título: Re: este problemita de c++ no funciona bien
Publicado por: tremolero en 19 Mayo 2012, 22:31 pm
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.


Título: Re: este problemita de c++ no funciona bien
Publicado por: exel en 19 Mayo 2012, 22:37 pm
 Creo que tu problema esta en la diferencia, por ejemplo:
Código
  1. x=cant/2000;
  2. cant=cant-cant /2000;

 En vez de eso, debes hacer esto:
Código
  1. x=cant/2000;
  2. cant=cant-x*2000;

 Eso para todas las operaciones analogas.

Saludos


Título: Re: este problemita de c++ no funciona bien
Publicado por: swagger14 en 19 Mayo 2012, 23:01 pm
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


Título: Re: este problemita de c++ no funciona bien
Publicado por: exel en 19 Mayo 2012, 23:07 pm
Y si sustituyes las salidas como
Código
  1. cout<<"billetes de 2000"<< "\n\n"<<x<<endl

por
Código
  1. 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