oefening java, heeeeeeeeelp...

  • Onderwerp starter Onderwerp starter Nina1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Nina1

Nieuwe gebruiker
Lid geworden
2 mei 2009
Berichten
3
Hoi,

Ik ben pas begonnen met programmeren in java. Een deel van de onderstaande oefening snap ik niet. Is er iem. die mij kan helpen? De vraag is:

Wat gebeurt er met
"terug -=munt100 * 100;", "terug -= munt50 * 50;"... ik snap niet warrom dit juist gebruikt wordt!




Code:
public static void main(String[] args) {

    int ingave = 2;

    float kost = 0.42F;

    

    int terug = ingave * 100 - (int)(kost*100);

    int munt100, munt50, munt20, munt10, munt5, munt2, munt1;

    munt100 = terug / 100;

    terug -=munt100 * 100;    (Wat gebeurt er hier???)

    

    munt50 = terug / 50;

    terug -= munt50 * 50;       (Wat gebeurt er hier???)

    

    munt20 = terug / 20;

    terug -= munt20 * 20;     (Wat gebeurt er hier???)

    

    munt10 = terug / 10;

    terug -= munt10 * 10;    (Wat gebeurt er hier???)

    

    munt5 = terug / 5;

    terug -= munt5 * 5;     (Wat gebeurt er hier???)

    

    munt2 = terug / 2;

    terug -= munt2 * 2;     (Wat gebeurt er hier???)

    

    munt1 = terug;     (Wat gebeurt er hier???)

    

    System.out.println("Munten van 1 EUR   : " + munt100);

    System.out.println("Munten van 0,50 EUR: " + munt50);

    System.out.println("Munten van 0,20 EUR: " + munt20);

    System.out.println("Munten van 0,10 EUR: " + munt10);

    System.out.println("Munten van 0,05 EUR: " + munt5);

    System.out.println("Munten van 0,02 EUR: " + munt2);

    System.out.println("Munten van 0,01 EUR: " + munt1);

  }

 

}
 
Laatst bewerkt door een moderator:
Wat denk je zelf? Heb je zelf al wat bedacht?

En een tip voor de volgende keer: zet code in de
Code:
 [ /code] tags ;)
 
Mmm waarom denk je dat het resultaat van een vermenigvuldiging er voor zorgt dat er iets op nul wordt gezet.

Waarom denk je niet dat de variabele gevuld wordt met het resultaat van de vermenigvuldiging, zou dat niet veel logischer zijn?
 
Ik interpreteer het zo dat er uitgerekend wordt hoeveel euro munten (=munt100), halve euromunten (=munt50) etc. teruggegeven moeten worden als je 2 euro van de klant krijgt, maar de kosten van het door de klant aangeschafte 0.42 euro is.

Er wordt telkens berekend hoeveel x zo'n munt moet worden teruggegeven, en dat wordt weer afgetrokken van wat er teruggegeven moet worden.

Tijs.
 
Waarbij de variabelen munt100, munt50, munt20, munt10, munt5, munt2, munt1
staan voor 1 euro (100 cent), 50 euro cent, 20, 10, 5, 2 en 1 cent.
Door te delen door de waarde hou je het aantal over.

De variabelen is zijn als int gedefineerd en daarom wordt het resultaat direct naar hele getallen afgerond.

Eerst wordt het verschil uitgerekend.
Dan omgezet naar een centen waarde,
Vervolgens wordt er gekeken hoe vaak 100 in dit getal past en dit aantal wordt van het terug bedrag af getrokken,
De rest wordt dan vervolgens gebruikt voor de volgende munt waarde
 
Laatst bewerkt:
Waarbij de variabelen munt100, munt50, munt20, munt10, munt5, munt2, munt1
staan voor 1 euro (100 cent), 50 euro cent, 20, 10, 5, 2 en 1 cent.
Door te delen door de waarde hou je het aantal over.

De variabelen is zijn als int gedefineerd en daarom wordt het resultaat direct naar hele getallen afgerond.

Eerst wordt het verschil uitgerekend.
Dan omgezet naar een centen waarde,
Vervolgens wordt er gekeken hoe vaak 100 in dit getal past en dit aantal wordt van het terug bedrag af getrokken,
De rest wordt dan vervolgens gebruikt voor de volgende munt waarde


Zou u dat mss met getallen kunnen uitleggen a.u.b.??
 
public static void main(String[] args) {

int ingave = 2;
Is betaald door klant: 2 euro
float kost = 0.42F;
Is berekende prijs ('prijskaartje'): 0.42 euro


int terug = ingave * 100 - (int)(kost*100);
Terug = 200 - (0.42 * 100) = 158 = aantal Eurocenten die teruggeven moeten worden
int munt100, munt50, munt20, munt10, munt5, munt2, munt1;

munt100 = terug / 100;
munt100 = 158 / 100 = 1 (direct naar beneden afgerond, want een geheel getal ("int")) = aantal 1-euromunten dat teruggegeven moet worden.
terug -=munt100 * 100; (Wat gebeurt er hier???)
Terug = Terug - 1x100 (eurocenten) = 58 eurocent over om terug te geven (nu we al 1x 1-euromunt gaan teruggeven, zie boven).

munt50 = terug / 50;
munt50 = 58 / 50 = 1 (direct naar beneden afgerond, want een geheel getal ("int")) = aantal 50-eurocentmunten dat teruggeven moet worden.

terug -= munt50 * 50; (Wat gebeurt er hier???)
Terug = Terug - 1x50 (eurocenten) = 8 eurocent over om terug te geven (nu we al 1x 1-euromunt en 1x 50-eurocentmunt gaan teruggeven, zie boven).

Etc. etc.

Hopelijk begrijp je nu wat er gebeurt.
Per saldo zal er dus uitkomen:
Munten van 1 euro: 1
Munten van 50 eurocent: 1
Munten van 20 euroncent: 0
Munten van 10 eurocent: 0
Munten van 5 eurocent: 1
Munten van 2 eurocent: 1
Munten van 1 eurocent: 1

Dus totaal 1,58 euro om terug te geven.

Tijs.
 
Laatst bewerkt:
Misschien dat onderstaande iets meer verduidelijkt:

terug -= munt2 * 2 kan je ook schrijven als

terug = terug - (munt2 * 2);
 
"terug -=munt100 * 100;", "terug -= munt50 * 50;"... ik snap niet warrom dit juist gebruikt wordt!

Munt100 is de naam van een variabele, waarom Munt100? Omdat hierin het aantal euros (-100 centen) word opgeslagen dat terug geven moet worden.

Munt100 had dus ook MuntEuro kunnen heten, of A, het is maar een naam.
Munt50 had ook Munt50eurocent kunnen heten of B...

Dus je vraag 'waarom dit juist' is eigenlijk niet te beantwoorden, er is geen specifieke reden waarom juist deze, de namen van de variabelen hadden dus net zo goed een andere naam kunnen hebben.

Maar waarom is er dan voor de namen gekozen door de gene die dit geschreven heeft.
Omdat de naam van variabelen op deze manier goed beschrijven welke waarde ze bevallen of gaan bevatten.

Ik hoop dat dat dit e.a. verhelderd.
N.b het principe van variabelen en het gebruik er van is je wel duidelijk?
 
@Nina1: Je hebt nog niet teruggereageerd of de uitleg je duidelijk is.
Graag even terugmelden, en daarna (als het duidelijk was) de vraag op opgelost zetten. Dat doe je door te klikken op "Vraag is opgelost" in het vakje "Status van de vraag", rechts (bijna) onderaan deze webpagina.

Tijs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan