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

Gemiddelde berekenen

Hallo

Ik zou iets willen schrijven in C# waarmee ik van een aantal geheel ingevoerde getallen het gemiddelde kan berekenen. Als er een negatief getal ingevuld wordt moet deze het gemiddelde berekenen.

Ik zou zoiets in mijn console willen zien:

1> 63

2> 88

3> 1009

4> -22

"Het gemiddelde is" : Hier moet dan de som van de eerste 3 getallen komen gedeelde door 3.

"Opnieuw berekenen?" "Ja/Nee"


Ik heb dit al staan maar dit doet niet echt correct wat ik zou willen. (berekening van gemiddelde is fout en de for lus blijft doortellen.

int getal = 0;

int som = 0;

double gemiddelde = 0;

for (int i = 1; i > 0; i++)

{

Console.Write(i + ">");

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

if (getal > 0)

{

som += getal;

}

else

{

gemiddelde = (som / i);

Console.WriteLine(gemiddelde);

}

}

Iemand die me kan helpen dit te doen met alleen for/do while/while lussen?

Bedankt!
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Gemiddelde berekenen

for (int i = 1; i > 0; i++)
Tenzij je de waarde van i binnen die for lus nog expliciet gaat aanpassen is dit een oneindige loop.

Je zegt, begin op i = 1, verhoog i bij elke stap en blijf dit doen zolang i groter is dan 0.

Ik zou iets doen als:

Code: Selecteer alles

while(true){

...

if( negatieve input){

....

break;

}

...

}
Hier maak je ook een oneindige loop aan, maar wanneer je merkt dat de user-input negatief is zeg je dat je uit te loop wil stappen.
phenomen schreef:Ik zou zoiets in mijn console willen zien:

1> 63

2> 88

3> 1009

4> -22

"Het gemiddelde is" : Hier moet dan de som van de eerste 3 getallen komen gedeelde door 3.

"Opnieuw berekenen?" "Ja/Nee"


...berekening van gemiddelde is fout...

...

Console.Write(i + ">");

...

gemiddelde = (som / i);

...
Zie je zo waardoor het resultaat niet klopt?

In principe kan je de oneindige loop ook maken zoals je hier doet op voorwaarde dat je 'breakt'. Alternatief is de while lus die ik voorstel waar je dan nog een teller inzet. Persoonlijk vind ik de while lus mooier omdat het daar duidelijk is dat de loop oneindig is. Je kan in de while lus ook maken dat je enkel de positieve inputs telt.
phenomen
Artikelen: 0
Berichten: 220
Lid geworden op: ma 17 okt 2005, 09:30

Re: Gemiddelde berekenen

Enorm bedankt. Ik heb het met die break gedaan.

Ik zie niet in hoe ik dit kan doen werken met een "while"?
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Gemiddelde berekenen

Ik zie niet in hoe ik dit kan doen werken met een "while"?
Het zijn schoonheidsdetails. Jouw structuur werkt ook, als je die 2 kleine aanpassingen doet, maar voor de volledigheid:

De while loop werkt als volgt:

Je schrijft while(expressie){ code in loop }. Zolang die expressie true is, zal de loop herhaald worden. Als je dus gewoon schrijft while(true) dan is de expressie gewoon true en zal die altijd true blijven. Dit is de meestgebruikte manier om een (met opzet) een oneindige loop te starten.

Je kan dan rustig een voor een inputs aannemen van de user en die verwerken. Wanneer je dan een negatief getal binnenkrijgt dan break je.

Je zal er wel een teller moeten bijzetten om bij te houden hoeveel (positieve) getallen er ingevoerd werden.

Dus:

Code: Selecteer alles

int i = 0;

while(true){

if(positief){

i++;

...

}else

break;

}
Op deze manier heb je ook gewoon de juiste waarde in i en niet in i-1.

Met een for loop heb je die teller al direct en die code zal ook gewoon werken, maar ze is niet zo mooi omdat het niet duidelijk is dat je een oneindige loop hebt.

Terug naar “Informatica en programmeren”