phenomen
Artikelen: 0
Berichten: 220
Lid geworden op: ma 17 okt 2005, 09:30

C programma

Ik heb hier in C# een programma voor het berekenen van de prijs van kaas.

Ingegeven gewicht min 75gr en keuze uit 3 kazen.

Nu is mijn vraag hoe ik het volgende kan toevoegen aan de code: Als de berekende prijs van de kaas groter is dan €2,5 krijgt de klant gratis Jonge kaas waarvan het gewicht 50% is van de bestelde kaas. (Ook hier met een minimum van 75gram)=> de gratis kaas wordt dus berekend via de functie "static double KaasPrijs(double gewicht)"

Code: Selecteer alles

double gewicht = 0;

int keuzeKaas = 0;

 do

 {

 try

 {

 Console.WriteLine("Geef het gewicht van de kaas (in gram)");

 gewicht = double.Parse(Console.ReadLine());

 if (gewicht < 75)

 {

  Console.WriteLine("Minimum 75 gram. Geef opnieuw");

 }

 }

 catch

 {

 Console.WriteLine("Gelieven een geldige waarde in te geven");

 }

 }

 while (gewicht < 75);

 Console.WriteLine("Geef de soort kaas:");

 Console.WriteLine("1. Jonge (0,0075/gr)");

 Console.WriteLine("2. Oude (0,009/gr)");

 Console.WriteLine("3. Hollandse (0,015/gr)");

 keuzeKaas = int.Parse(Console.ReadLine());

 if (keuzeKaas == 1)

 {

 Console.WriteLine("\nResultaat: " + KaasPrijs(gewicht) + " EUR");

 }

 else if (keuzeTaart == 2)

 {

 double prijsperGR = 0.009;

 Console.WriteLine("\nResultaat: " + KaasPrijs(gewicht, prijsperGR) + " EUR");

 }

 else if (keuzeTaart == 3)

 {

 double prijsperGR = 0.015;

 Console.WriteLine("\nResultaat: " + KaasPrijs(gewicht, prijsperGR) + " EUR");

 }

 else

 {

 Console.WriteLine("Ongeldige keuze");

 }

}

static double KaasPrijs(double gewicht)

{

 return gewicht*0.0075;

}

static double KaasPrijs(double gewicht, double prijsperGR)

{

 return gewicht*prijsPerGr;

}
Alvast enorm bedankt
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: C programma

Ik heb om te beginnen even code-tags toegevoegd om je code beter leesbaar te maken.

Je berekent nu de prijs en je schrijft die naar de console. Je zou deze in een variabele moeten opslaan zodat je na het berekenen van de prijs kan kijken of die > €2,5 is. Als dat het geval is dan krijgt de klant gewicht/2 gram gratis Jonge kaas.

Is dit wat je wil of bedoel je iets anders?
phenomen
Artikelen: 0
Berichten: 220
Lid geworden op: ma 17 okt 2005, 09:30

Re: C programma

Klopt! Maar ik weet niet goed hoe/waar dit toe te voegen en of de code mogelijk efficienter kan?
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: C programma

Code: Selecteer alles

if (keuzeKaas == 1)

...

else if (keuzeTaart == 2)

...

else if (keuzeTaart == 3)

...

else

...
Dit is een klassieke situatie waar je code mooier wordt als je een switch gebruikt:

Code: Selecteer alles

switch(keuzeKaas){

case 1:

// code geval 1

break;

case 2:

// code geval 2

break;

...

default:

// code voor geen van bovenstaande gevallen

}
(Opmerking: je ziet daar die breaks staan, als die er niet staan dan loopt het programma verder over de andere mogelijkheden en voert de code uit van mogelijkheden die overeenkomen. Zonder breaks wordt de default code altijd uitgevoerd.)

In plaats van direct je resultaat weg te schrijven naar de console, zoals je nu doet, zou je het moeten opslaan in een variabele. Na de controle op keuzeKaas kan je dan die check doen op (prijs > 2.5), gratis kaas berekenen en de output tonen.

static double KaasPrijs(double gewicht)

Deze functie vind ik persoonlijk overbodig. Je hebt een algemenere functie waarin je de prijs per gram in meegeeft. Gebruik deze ook gewoon voor de Jonge kaas.
phenomen
Artikelen: 0
Berichten: 220
Lid geworden op: ma 17 okt 2005, 09:30

Re: C programma

Nou ik ga die functie toch behouden om deze aan te spreken voor het berekenen van de gratis kaas.

Ik heb de functies als volgt aangepast:

static double KaasPrijs(double gewicht)

{

double resultaat = 0;

resultaat = gewicht * 0.0075;

return resultaat;

}

static double KaasPrijs(double gewicht, double prijsperGR)

{

double resultaat = 0;

resultaat = gewicht * prijsperGR;

return resultaat;

}

Nu heb ik hier een variabele resultaat die de prijs bevat maar ik kan deze waarde niet buiten deze functies gebruiken. Bovendien zie ik niet hoe dit te integreren :s
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: C programma

Nou ik ga die functie toch behouden om deze aan te spreken voor het berekenen van de gratis kaas.
Ik zie niet waarom? Je krijgt gewoon gewicht/2 gratis kaas. Aangezien je hem niet moet betalen, maakt de prijs toch niet uit?

Het kan natuurlijk geen kwaad, maar het is raar dat je de Jonge kaas op een andere manier behandelt als de 2 andere soorten.
Nu heb ik hier een variabele resultaat die de prijs bevat maar ik kan deze waarde niet buiten deze functies gebruiken. Bovendien zie ik niet hoe dit te integreren :s
Dat is niet wat ik bedoelde, de functie was in orde. Ik bedoelde dat je de prijs in een variabele moet schrijven in je hoofdcode.

Ik zou zoiets doen:

Code: Selecteer alles

double prijsperGr;

switch(keuzeKaas){

case 1:

prijsperGr = 0.0075;

break;

case 2:

prijsperGr = 0.009;

break;

case 3:

prijsperGr = 0.015;

break;

default:

prijsperGr = 0;

}

if(prijsperGr != 0){

double prijs = KaasPrijs(gewicht, prijsperGr);

// toon hier eventueel de prijs al

if(prijs > 2.5){

// hier het stuk van de gratis kaas

}

}else{

// ongeldige keuze

}
phenomen
Artikelen: 0
Berichten: 220
Lid geworden op: ma 17 okt 2005, 09:30

Re: C programma

Ok bedankt. Dan doe ik het zo.

Voor het feit dat het gewicht/2 niet kleiner mag zijn dan 75gr schrijf ik dan gewoon extra code lijn
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: C programma

Ja, zo zou het moeten lukken ;)

Terug naar “Informatica en programmeren”