Este programa lo realicé como una tarea en un curso, consiste simular cuánto es lo mínimo de monedas que se le debe regresar al usuario como cambio. Esta es la base de lo que se conoce como un algoritmo "greedy", esto es que siempre toma como respuesta el óptimo local o la mejor respuesta inmediata.
Código
/*
Suppose that a cashier owes a customer some change and on that cashier's belt are levers that dispense quarters, dimes, nickels and pennies.Think of a "greedy" cashier as one or more presses of one or more levers.
*/
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main (void)
{
float change;
int coins=0;
//coins
int quarter = 25;
int dime = 10;
int nickel = 5;
int pennie = 1;
do
{
printf("How much change is owed: ");
change = GetFloat();
}while(change<0);
int changeInt = (int) round(change * 100);
//do this while change is greater than 0
while(changeInt > 0)
{
while((changeInt-quarter)>= 0)//can I substract a quarter?
{
changeInt = changeInt - quarter;
coins = coins+1;
}
while((changeInt-dime)>= 0)//can I substract a dime?
{
changeInt = changeInt - dime;
coins=coins+1;
}
while((changeInt-nickel)>= 0)//can I substact a nickel?
{
changeInt = changeInt - nickel;
coins=coins+1;
}
while((changeInt-pennie)>= 0)//can I substract a pennie?
{
changeInt = changeInt - pennie;
coins=coins+1;
}
}
printf("%d\n", coins);
}
No comments:
Post a Comment