login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gemiddelde berekenen van user ingevoerde waardes(Console application) (Opgelost)

Offline Jimbo - 29/09/2011 19:14
Avatar van JimboLid Hallo,

Ik zou het gemiddelde van door de user ingevoerde waardes moeten berekenen, de derde waarde 0 zou het programma moeten stoppen en dit gemiddelde berekenen. Het lijkt aan de output dat alle even getallen goed op de console gezet worden, maar de oneven getallen(kommagetallen) worden blijkbaar afgerond, dit zou moeten resulteren in een kommagetal.

De code die ik tot nu toe heb is:
  1. Module Gemiddelde
  2. Sub Main()
  3. Console.WriteLine("Gemiddelde berekenen van de waardes <0 om te stoppen> : ")
  4. Dim value1 As Integer = Console.ReadLine
  5. Dim value2 As Integer = Console.ReadLine
  6. Dim value3 As Integer = Console.ReadLine
  7.  
  8. If value3 = 0 Then 'als inputvalue3 0 is wordt het gemiddelde berekend en het programma gestopt
  9. Dim result As Integer = (value1 + value2) / 2
  10. Console.WriteLine("Het gemiddelde van bovenstaande waardes is " & result & ".")
  11. End If
  12. Console.ReadLine()
  13. End Sub
  14. End Module

4 antwoorden

Gesponsorde links
Offline larssy1 - 30/09/2011 11:31
Avatar van larssy1 MySQL beginner Je gebruikt integers. dat zijn hele getallen, gebruik Double als je komma getallen wilt.
Offline Abbas - 30/09/2011 13:37 (laatste wijziging 30/09/2011 13:38)
Avatar van Abbas Gouden medaille

Crew .NET
Je programma is ook niet logisch opgebouwd. Wat als de gebruiker als derde invoer een getal opgeeft dat niet gelijk is aan 0? Je programma vangt dit niet op. En wat als de andere twee invoeren niet eens een getal zijn? Er zullen Exceptions worden gegooid. Verder gebruik je inderdaad voor een kommagetal een Double of Decimal. Hier is een betere implementatie van een oplossing voor je probleem:

  1. Dim value1 As String = String.Empty
  2. Dim value2 As String = String.Empty
  3.  
  4. Console.WriteLine("Gemiddelde berekenen van waardes")
  5. Console.WriteLine("--------------------------------" & Environment.NewLine)
  6.  
  7. Do Until (IsNumeric(value1))
  8. Console.Write("Getal 1: ")
  9. value1 = Console.ReadLine()
  10. Loop
  11.  
  12. Do Until (IsNumeric(value2))
  13. Console.Write("Getal 2: ")
  14. value2 = Console.ReadLine()
  15. Loop
  16.  
  17. Dim result As Double = (Convert.ToInt32(value1) + Convert.ToInt32(value2)) / 2
  18. Console.WriteLine("Het gemiddelde is: " & result)
  19.  
  20. Console.ReadLine()

Hopelijk ben je hier wat mee! 
Offline Jimbo - 01/10/2011 16:45
Avatar van Jimbo Lid Ik heb het blijkbaar verkeerd verwoord Titjes, sorry. Ik zou inderdaad willekeurige waardes moeten kunnen invullen(meer dan 4 op een rij bv). Het gemiddelde moet dan op basis van dit berekend worden(zonder de waarde 0 erbij te rekenen).

Je code werkt inderdaad, maar dit is natuurlijk op basis van 2 getallen.
Met exceptions moet nog geen rekening mee gehouden worden.
Offline Abbas - 01/10/2011 18:03
Avatar van Abbas Gouden medaille

Crew .NET
Ok, zo had ik het inderdaad niet begrepen. Hieronder staat de oplossing voor je probleem met nog steeds de ingebouwde controle op invoer:

  1. Dim inputList As New List(Of Integer)
  2. Dim input As String = String.Empty
  3. Dim counter As Integer = 0
  4.  
  5. Console.WriteLine("Gemiddelde berekenen van waardes")
  6. Console.WriteLine("--------------------------------" & Environment.NewLine)
  7.  
  8. Do Until (input.Equals("0"))
  9.  
  10. Console.Write("Getal " & counter + 1 & ": ")
  11. input = Console.ReadLine()
  12.  
  13. While (Not IsNumeric(input))
  14. Console.WriteLine("GEEN GELDIGE INVOER!")
  15. Console.Write("Getal " & counter + 1 & ": ")
  16. input = Console.ReadLine()
  17. End While
  18.  
  19. If (Not input.Equals("0")) Then
  20. inputList.Add(Convert.ToInt32(input))
  21. counter += 1
  22. End If
  23.  
  24. Loop
  25.  
  26. Dim result As Double = inputList.Sum() / counter
  27. Console.WriteLine("Het gemiddelde is: " & result)
  28.  
  29. Console.ReadLine()

Hope this helps! 
Bedankt door: Jimbo
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.173s