Programa en c

Luis
04 de Mayo del 2008
Alguin que me ayude a hacer un programa en c
que pida el monto de una compra, con cuanto va a pagar y diga cuanto es la devuelta de la siguente forma:Ejemplo si el monto de la compra es: 1478.34
y pago con :2000
la devuelta es: 521.66
y que el programa diga que devuelva.
1 papeleta de 500 pesos
2 moneda de 10 pesos
1 moneda de un peso
1 moneda de 10 centavos
1 de 5 centavo
1 de un centavo

PoWeRsgame
04 de Mayo del 2008
Hola.
El programa que planteas es más bien sencillo.
La solución se basa en ir dividiendo la vuelta entre los tipos de billetes y monedas esto nos dará la cantidad de billetes de cada clase, Luego la vuelta se decrementaria en el orden del módulo de si misma con el tipo de billete.
Por ejemplo si el monto es de 120 y se ha pagado con un billete de 200 la vuelta será 200 - 120 = 80, luego para saber cuantos billetes de 50 hacen falta dividimos la vuleta entre el valor del billete (80 / 50 = 1, division entera) para saber la vuelta que queda habra que realizar el modulo de 80 entre 50, por tanto la vuelta = vuelta % valor del billete (vuelta restante =
80 % 50 = 30).
La única pega que hay se ha de tratar por separado la parte entera (pesos) de la parte fraccionaria (centavos).

Aquí te dejo el código si tienes alguna duda pregunta:

#include <stdio.h>
#define P 8
#define C 5
int main(int argc, char** argv)
{
float monton, pago, vuelta;
int vuelta_p, vuelta_c; //Variables que guardaran la parte entera y la parte decimal de la vuelta
int pesos [P] = {500, 200, 100, 50, 20, 10, 5, 1}; //Matriz con los valores de los pesos
int cent [C] = {50, 20, 10 ,5 ,1}; //Matriz con los valores de los centavos
int cont_p [P], cont_c [C]; //Matrices que guardaran la cntidad de cada billete o moneda
int cont; //variable auxiliares
printf ("Monton de compra:t");
scanf ("%g", &monton);
getc (stdin);
printf ("Pago:t");
scanf ("%g",&pago);
getc (stdin);
vuelta = pago - monton;
vuelta_p = vuelta; //Al ser vuelta_p entero solo guardara la parte entera de vuelta
vuelta_c = (vuelta * 100) - (vuelta_p * 100); //Al multiplicarlo por 100 nos quitamos la parte decimal y si lo restamos a la parte entera * 100 obtenemos la parte decimal como entera
for (cont = 0; cont < P; cont ++){
cont_p [cont] = vuelta_p / pesos [cont];
vuelta_p = vuelta_p % pesos [cont];
}
for (cont = 0; cont < C; cont ++){
cont_c [cont] = vuelta_c / cent [cont];
vuelta_c = vuelta_c % cent [cont];
}
for (cont = 0; cont < P; cont ++)
if (cont_p [cont] != 0)
printf ("%d de %d pesosn", cont_p [cont], pesos [cont]);
for (cont = 0; cont < C; cont ++)
if (cont_c [cont] != 0)
printf ("%d de %d centavosn", cont_c [cont], cent [cont]);
return 0;
}


PoWeRsgame
04 de Mayo del 2008
Perdón pero no se han imprimido los tabuladores