Enviado em 06/03/2013 - 14:19h
O codigo "decompõe" uma quantidade de dinheiro em cedulas e moedas. Acontece que quando ele precisa de uma moeda de 10 centavos ou de 5 ou de 1, o programa trava. Nao consegui achar nenhum erro. Segue o codigo:
#include <stdio.h>
int main(){
float umcent = 0, cincocent = 0, dezcent = 0, vintecincocent = 0, cinquentacent = 0, um = 0, dois = 0, cinco = 0, dez = 0, vinte = 0, cinquenta = 0, cem = 0, N = 0, N2 = 0;
scanf("%f", &N);
N2 = N;
while(N2 > 0.00){
if(N2 >= 100){
cem++;
N2 = N2 - 100;
}
if(N2 >= 50 && N2 < 100){
cinquenta++;
N2 = N2 - 50;
}
if(N2 >= 20 && N2 < 50){
vinte++;
N2 = N2 - 20;
}
if(N2 >= 10 && N2 < 20){
dez++;
N2 = N2 - 10;
}
if(N2 >=5 && N2 < 10){
cinco++;
N2 = N2 - 5;
}
if(N2 >= 2 && N2 < 5){
dois++;
N2 = N2 - 2;
}
if(N2 >= 1 && N2 < 2){
um++;
N2 = N2 - 1;
}
if(N2 >= 0.50 && N2 < 1){
++cinquentacent;
N2 = N2 - 0.50;
}
if(N2 >= 0.25 && N2 < 0.50){
++vintecincocent;
N2 = N2 - 0.25;
}
if(N2 >= 0.10 && N2 < 0.25){
++dezcent;
N2 = N2 - 0.10;
}
if(N2 >= 0.05 && N2 < 0.10){
++cincocent;
N2 = N2 - 0.05;
}
if(N2 >= 0.01 && N2 < 0.05){
++umcent;
N2 = N2 - 0.01;
}
} //Fim do while
printf("NOTAS:\n");
printf("%.0f nota(s) de R$ 100.00\n", cem);
printf("%.0f nota(s) de R$ 50.00\n", cinquenta);
printf("%.0f nota(s) de R$ 20.00\n", vinte);
printf("%.0f nota(s) de R$ 10.00\n", dez);
printf("%.0f nota(s) de R$ 5.00\n", cinco);
printf("%.0f nota(s) de R$ 2.00\n", dois);
printf("MOEDAS:\n");
printf("%.0f moeda(s) de R$ 1.00\n", um);
printf("%.0f moeda(s) de R$ 0.50\n", cinquentacent);
printf("%.0f moeda(s) de R$ 0.25\n", vintecincocent);
printf("%.0f moeda(s) de R$ 0.10\n", dezcent);
printf("%.0f moeda(s) de R$ 0.05\n", cincocent);
printf("%.0f moeda(s) de R$ 0.01\n", umcent);
}