Springen naar inhoud

C programma


  • Log in om te kunnen reageren

#1

phenomen

    phenomen


  • >100 berichten
  • 220 berichten
  • Ervaren gebruiker

Geplaatst op 06 november 2011 - 17:59

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)"


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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 06 november 2011 - 18:44

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?

#3

phenomen

    phenomen


  • >100 berichten
  • 220 berichten
  • Ervaren gebruiker

Geplaatst op 06 november 2011 - 18:49

Klopt! Maar ik weet niet goed hoe/waar dit toe te voegen en of de code mogelijk efficienter kan?

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 06 november 2011 - 19:00

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:
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.

#5

phenomen

    phenomen


  • >100 berichten
  • 220 berichten
  • Ervaren gebruiker

Geplaatst op 06 november 2011 - 19:17

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

#6

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 06 november 2011 - 19:35

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:
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
}

#7

phenomen

    phenomen


  • >100 berichten
  • 220 berichten
  • Ervaren gebruiker

Geplaatst op 06 november 2011 - 19:59

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

#8

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 06 november 2011 - 20:05

Ja, zo zou het moeten lukken ;)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures