2016-05-15 2 views
0

J'examine pour mon test demain .. et j'ai rencontré un problème dans mon programme (j'ai besoin de créer un programme qui affichera la répartition du montant entré .. et j'ai un problème avec les cents ...)Programme de décomposition en C#

Console.Write("Enter amount: "); 
double amt = double.Parse(Console.ReadLine()); 

thou = (int)amt/1000; 
change = (int)amt % 1000; 

fivehun = (int)change/500; 
change = change % 500; 

twohun = (int)change/200; 
change = change % 200; 

hun = (int)change/100; 
change = change % 100; 

fifty = (int)change/50; 
change = change % 50; 

twenty = change/20; 
change = change % 20; 

ten = (int)change/10; 
change = change % 10; 

five = (int)change/5; 
change = change % 5; 

one = (int)change/1; 
change = change % 1; 

twencents = (int)(change/.25); 
change = change % .25; //there was an error here.. starting here 

tencents = (int)(change/.10); 
change = change % .10; 

fivecents = (int)(change/.05); 
change = change % .05; 

onecent = (int)(change/.01); 
change = change % .01; 

Console.WriteLine("The breakdown is as follows: "); 
Console.WriteLine("Php 1000   ={0} ", thou); 
Console.WriteLine("Php 500   ={0} ", fivehun); 
Console.WriteLine("Php 200   ={0} ", twohun); 
Console.WriteLine("Php 100   ={0} ", hun); 
Console.WriteLine("Php 50   ={0} ", fifty); 
Console.WriteLine("Php 20   ={0} ", twenty); 
Console.WriteLine("Php 10   ={0} ", ten); 
Console.WriteLine("Php 05   ={0} ", five); 
Console.WriteLine("Php 01   ={0} ", one); 
Console.WriteLine("Php 0.25   ={0} ", twencents); 
Console.WriteLine("Php 0.10   ={0} ", tencents); 
Console.WriteLine("Php 0.05   ={0} ", fivecents); 
Console.WriteLine("Php 0.01   ={0} ", onecent);    

Console.ReadKey(); 

L'erreur a dit que je ne peux pas convertir à double int j'ai donc essayé de le convertir mon casting, il

change = (double) change % .25; 

encore une erreur ..

+0

Avez-vous essayé de remplacer '.25' par' .25f'? –

+0

oui ne fonctionne toujours pas .. – Franchette

+0

Il semble que deux côtés de l'expression modulo doit être 'même type'. Ou vous devez le surcharger par vous-même. Reportez-vous: https://msdn.microsoft.com/en-US/library/0w4e0fzs(v=VS.100).aspx –

Répondre

0

ÉDITÉE

faire un premier temps à double changement = 0 et et diviser l'entrée amt 2 variables

double wholeValues = (int)amt; 
double decimalValues = amt - wholeValues; 

puis changer

thou = (int)amt/1000; 
change = (int)amt % 1000; 

faire comme

thou = (int)wholeValues/1000; 
change = (int)wholeValues % 1000; 

Sinon tu va supprimer les valeurs décimales à ce point

mais vous manque un casting int à

twenty = (int) change/20; 

modules de 1 donnera la même valeur à nouveau, commencer le calcul de cent avec les nouvelles decimalValues ​​variables

one = (int)change/1; 

change = decimalValues * 100; 

twencents = (int)(change/25); 
change = change % 25; 

tencents = (int)(change/10); 
change = change % 10; 

fivecents = (int)(change/5); 
change = change % 5; 

si l'on utilise des modules avec des valeurs décimales, vous risquez parfois avec des valeurs incorrectes par exemple pour .30 cents, il représentera .25 cents = 1, .05 cents = 0, .01 cents = 4

+0

lorsque supprimer le (int) les erreurs ont été ajoutées .. – Franchette

+0

pouvez-vous spécifier les autres erreurs? – CloudSL

+0

ne peut pas implicitement convertir le type 'double' en 'int' une conversion explicite existe (manque-t-il un casting?) Qui était l'erreur mais quand j'ai fait ce que vous m'avez dit .. une autre erreur comme celle ajouté à la liste – Franchette

1

Utilisez faire changement majeur = 0; au lieu de int changement = 0;

+0

plus d'erreurs à venir quand je l'ai fait que .. – Franchette

0

enfin obtenu!

int thou, fivehun, twohun, hun, fifty, twenty, ten, five, one; 
double change = 0; // added this one as suggested 

Console.Write("Enter amount: "); 
double amt = double.Parse(Console.ReadLine()); 


thou = (int)amt/1000; 
change = amt % 1000; //remove the int (change should be double) 

fivehun = (int)change/500; 
change = change % 500; 

twohun = (int)change/200; 
change = change % 200; 

hun = (int)change/100; 
change = change % 100; 

fifty = (int)change/50; 
change = change % 50; 

twenty = (int) change/20; //added int here 
change = change % 20; 

ten = (int)change/10; 
change = change % 10; 

five = (int)change/5; 
change = change % 5; 

one = (int)change/1; 
change = change % 1; 

int twencents = (int)(change/0.25); 
change = change % 0.25; 

int tencents = (int)(change/0.10); 
change = change % 0.10; 

int fivecents = (int)(change/0.05); 
change = change % 0.05; 

int onecent = (int)(change/0.01); 
change = change % 0.01;