Programm zum Berechnen des Durchschnitts aus vier Zahlen, HILFE!

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

    Programm zum Berechnen des Durchschnitts aus vier Zahlen, HILFE!

    Moin,

    Ich habe mir mit Hilfe von Visual Basics 2008 Express Edition eine Windows Forms Anwendung erstellt.
    Die Anwendung soll den Durchschnitt aus vier addierten Zahlen berechnen.
    Die Anwendung besteht also aus vier Textfeldern die eine Eingabe vom Benutzer verlangen und einem Button.
    Beim Klick des Buttons wird folgendes ausgeführt:

    VB.NET-Quellcode

    1. Dim Eingabe As String() = {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text}
    2. Dim Eingabe_als_Zahl As Integer() = {Convert.ToInt32(Eingabe(0)), Convert.ToInt32(Eingabe(1)), Convert.ToInt32(Eingabe(2)), Convert.ToInt32(Eingabe(3))}
    3. Dim Eingabealle As Integer = Eingabe_als_Zahl(0) + Eingabe_als_Zahl(1) + Eingabe_als_Zahl(2) + Eingabe_als_Zahl(3)
    4. Dim Faktor As Integer = 4
    5. Dim Endergebnis As Double = Eingabealle / Faktor
    6. MsgBox(Endergebnis)


    Sprich, die Eingaben der Textfelder werden in Zahlen umgewandelt, die Zahlen werden addiert, und werden dann durch vier (weil vier Zahlen) geteilt. Somit wird der Durchschnitt berechnet.
    Soweit so gut, nun zu meinem Problem: Wenn ich nur 3 Zahlen eingebe und somit ein Textfeld leer lasse, zeigt er an das dies ein Problem ist,
    logischerweise. Wie muss ich also den Code verändern das er auch nur drei Eingaben in die Textfeldern annimmt und dementsprechend auch durch 3 statt durch 4 teilt,
    da ich ja den Durchschnitt berechnen will.

    vielen dank
    Hey,

    ich würde mit einer Schleife alle Felder überprüfen, ob auch eine Zahl eingegeben ist und daraus den Durchschnitt bilden. Vorteil ist, dass du beliebig viele Textboxen angeben kannst. Es werden nur die berücksichtigt, die auch einen Inhalt haben:

    Quellcode

    1. ' Alle Felder angeben, die untersucht werden sollen
    2. Dim felder() As String = {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text}
    3. Dim gesamt As double
    4. Dim anzahl As Integer
    5. Dim durchschnitt As Double
    6. ' Überprüfen der Felder
    7. For i As Integer = 0 To felder.Length - 1
    8. ' Nur verwenden, wenn auch eine Zahl eingegeben ist
    9. If felder(i) <> Nothing Then
    10. gesamt += Convert.ToDouble(felder(i).ToString)
    11. anzahl += 1
    12. End If
    13. Next
    14. ' Durschnitt bilden...
    15. durchschnitt = gesamt / anzahl
    16. ' ...und anzeigen
    17. MsgBox("Durchschnitt: " & durchschnitt)

    Gruß, Manschula

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    Hallo,

    es kitzelte mich so in den fingern.

    @manschula,
    was hältst du davon ?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim zw As Double = 0
    4. Dim counter As Integer = 0
    5. For Each c As Control In Me.Panel1.Controls
    6. If TypeOf c Is TextBox Then
    7. Dim ret As Double = -1
    8. If Double.TryParse(c.Text, ret) Then
    9. zw += CDbl(ret)
    10. counter += 1
    11. End If
    12. End If
    13. Next
    14. MessageBox.Show("Durchschnitt aller eingebenenen Zahlen ist = " & (zw / counter).ToString)
    15. End Sub
    16. End Class

    Die einzige Bedingung für diesen Code ist es x-Textboxen und einen Button in einem Panel anzuordnen.
    Was auch immer du in die Pictureboxen eingibst, es werden nur die mit den Zahlen gezählt und ausgewertet.

    Das Codemonster von Manschula braucht es dazu nicht.
    Vermutlich geht es auch einfacher - aber auf die schnelle soll es das hier tun.

    EDIT:
    Code umgebaut !

    Gruss

    mikeb69

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()

    Hey Mike,

    klar ist dein Code simpler & besser :P Aber da ich mich selber noch zu den "Anfängern" zähle, freue ich mich immer auf (ernst gemeinte) Verbesserungsvorschläge. Insofern habe ich auch wieder etwas dazugelernt.

    mikeb69 schrieb:

    Vermutlich geht es auch einfacher - aber auf die schnelle soll es das hier tun.
    Könnte übrigens unter jeder meiner Antworten stehen...

    Grüße, Manschula
    @mikeb69: IsNumberic stammt vom alten VB6. Es wird gar nicht gebraucht. Besser Parse oder TryParse verwenden. :rolleyes:

    Ich verwende niemals Funktionen und Klasse vom VB6. Ein Beispiel, dass die neue nächste Version VB6 abschaffen könnte.
    Hallo tsc-1986,

    IsNumberic stammt vom alten VB6.

    das ist mir neu.

    In der Regel verwende ich auch keine VB6 Befehle mehr.

    EDIT:
    Du hast natürlich Recht.
    Werde mich umstellen - Danke.

    Gruss

    mikeb69

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()