|
Categorieën >
VB.NET
Gemiddelde berekenen van user ingevoerde waardes(Console application) (Opgelost)
|
|
|
offline
|
Lid
|
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:
Module Gemiddelde
Sub Main()
Console.WriteLine("Gemiddelde berekenen van de waardes <0 om te stoppen> : ")
Dim value1 As Integer = Console.ReadLine
Dim value2 As Integer = Console.ReadLine
Dim value3 As Integer = Console.ReadLine
If value3 = 0 Then 'als inputvalue3 0 is wordt het gemiddelde berekend en het programma gestopt
Dim result As Integer = (value1 + value2) / 2
Console.WriteLine("Het gemiddelde van bovenstaande waardes is " & result & ".")
End If
Console.ReadLine()
End Sub
End Module
Module Gemiddelde Sub Main() Console.WriteLine("Gemiddelde berekenen van de waardes <0 om te stoppen> : ") Dim value1 As Integer = Console.ReadLine Dim value2 As Integer = Console.ReadLine Dim value3 As Integer = Console.ReadLine If value3 = 0 Then 'als inputvalue3 0 is wordt het gemiddelde berekend en het programma gestopt Dim result As Integer = (value1 + value2) / 2 Console.WriteLine("Het gemiddelde van bovenstaande waardes is " & result & ".") End If Console.ReadLine() End Sub End Module
|
4 antwoorden
|
|
|
offline
|
MySQL beginner
|
Je gebruikt integers. dat zijn hele getallen, gebruik Double als je komma getallen wilt.
|
titjes – 30/09/2011 13:37 (Laatst gewijzigd op 30/09/2011 13:38)
|
|
offline
|

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:
Dim value1 As String = String.Empty
Dim value2 As String = String.Empty
Console.WriteLine("Gemiddelde berekenen van waardes")
Console.WriteLine("--------------------------------" & Environment.NewLine)
Do Until (IsNumeric(value1))
Console.Write("Getal 1: ")
value1 = Console.ReadLine()
Loop
Do Until (IsNumeric(value2))
Console.Write("Getal 2: ")
value2 = Console.ReadLine()
Loop
Dim result As Double = (Convert.ToInt32(value1) + Convert.ToInt32(value2)) / 2
Console.WriteLine("Het gemiddelde is: " & result)
Console.ReadLine()
Dim value1 As String = String.Empty Dim value2 As String = String.Empty Console.WriteLine("Gemiddelde berekenen van waardes") Console.WriteLine("--------------------------------" & Environment.NewLine) Do Until (IsNumeric(value1)) Console.Write("Getal 1: ") value1 = Console.ReadLine() Loop Do Until (IsNumeric(value2)) Console.Write("Getal 2: ") value2 = Console.ReadLine() Loop Dim result As Double = (Convert.ToInt32(value1) + Convert.ToInt32(value2)) / 2 Console.WriteLine("Het gemiddelde is: " & result) Console.ReadLine()
Hopelijk ben je hier wat mee!
|
|
|
|
offline
|
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
|

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:
Dim inputList As New List(Of Integer)
Dim input As String = String.Empty
Dim counter As Integer = 0
Console.WriteLine("Gemiddelde berekenen van waardes")
Console.WriteLine("--------------------------------" & Environment.NewLine)
Do Until (input.Equals("0"))
Console.Write("Getal " & counter + 1 & ": ")
input = Console.ReadLine()
While (Not IsNumeric(input))
Console.WriteLine("GEEN GELDIGE INVOER!")
Console.Write("Getal " & counter + 1 & ": ")
input = Console.ReadLine()
End While
If (Not input.Equals("0")) Then
inputList.Add(Convert.ToInt32(input))
counter += 1
End If
Loop
Dim result As Double = inputList.Sum() / counter
Console.WriteLine("Het gemiddelde is: " & result)
Console.ReadLine()
Dim inputList As New List(Of Integer) Dim input As String = String.Empty Dim counter As Integer = 0 Console.WriteLine("Gemiddelde berekenen van waardes") Console.WriteLine("--------------------------------" & Environment.NewLine) Do Until (input.Equals("0")) Console.Write("Getal " & counter + 1 & ": ") input = Console.ReadLine() While (Not IsNumeric(input)) Console.WriteLine("GEEN GELDIGE INVOER!") Console.Write("Getal " & counter + 1 & ": ") input = Console.ReadLine() End While If (Not input.Equals("0")) Then inputList.Add(Convert.ToInt32(input)) counter += 1 End If Loop Dim result As Double = inputList.Sum() / counter Console.WriteLine("Het gemiddelde is: " & result) Console.ReadLine()
Hope this helps!
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|