Takılan para miktarının kullanıcı için bozuk paraya dönüştürüldüğü fatura değiştirici için bir kod yazmaya çalışıyorum. Sorun, 111.111'i girdiğimde 222.222 gibi 50c'lik miktarımın ondalıklarını tutmamdır. Benim 20c ve 10c kullanılmayan olduğunu .. Eğer bölünme sonrasında değerini yuvarlamak gerekir tamsayı değerlerine sahip amount
zorlamak içinFatura değiştirici/bozuk para otomatı için bir kod yazılmaya çalışılıyor
#include <stdio.h>
int main()
{
double sum50c=0, sum20c=0, sum10c=0, remainder, remainder2, remainder3, end=0;
double amount;
do
{
printf("Please enter an amount(dollars):");
scanf("%lf", &amount);
amount=amount*100;
if(amount<0){
printf("Invalid Input\n");
printf("Re-enter your amount:");
scanf("%lf", &amount);
}
if(amount>=50){
remainder=amount/50;
sum50c=remainder;
}else
if(remainder!=0){
remainder2=remainder/20;
sum20c=remainder2;
}else
if(remainder2!=0){
remainder3=remainder3/10;
sum10c=remainder3;
}
if(sum50c>200||sum20c>200||sum10c>200){
end++;
}else{
end=0;
}
}
while(end<=0);
printf("The amount of 50cents=%lf, 20cents=%lf, 10cents=%lf", sum50c, sum20c, sum10c);
}
Gerçek sayılar kullanmamalısınız. Tam olarak paralar dağıtılmış olduğundan ve 5.55 cent sikke olmadığından tamsayıları kullanın. Sentlerde çalışmak (1 sent atomiktir ve bundan daha küçük bir şey olamaz). –
Ayrıca, 'bir şey/x 'size kalanı değil, bölümü verir. Tavsiye edildiği gibi tam sayılara geçin ve daha sonra '%' (modulo) operatöründe okuyun. – Lundin