Hab ein Problem in Visual Basic, ich brauche hilfe..

... komplette Frage anzeigen

5 Antworten

Hallo,

ich habe noch eine Verbundlösung. Hier sind die VB-Befehle aufgelistet, die man nicht benutzen sollte.(und die Alternativen) Ich habe die Gauß-Formel in eine Funktion ausgelagert. da kann man sie wiederverwenden. Wenn man noch mehr wiederverwenden möchte, könnte man noch mehr "auslagern".

http://www.vb-paradise.de/allgemeines/tipps-tricks-und-tutorials/allgemein/61310-boese-vb6-vb-2003-funktionen-und-ihre-guten-besseren-neuen-vb-net-alternativen/

Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim Eingabe As Integer
      If Not IsNumeric(TextBox1.Text) Then Exit Sub
'Konvertierung in Ganzzahl und richtigen Wert auch in der Textbox ersetzen
    Eingabe = Convert.ToInt16(Eingabe)
    TextBox1.Text = Eingabe.ToString
'Funktionsabfrage und Umwandlung in String
    Label1.Text = Formel_Gauß(Eingabe).ToString

  End Sub

Public Function Formel_Gauß(Endwert as Integer)
'Gaußsche Formel
Return  endwert * (endwert + 1)/2
End Function

Grüße

Antwort bewerten Vielen Dank für Deine Bewertung

Mein Visual Basic ist ein bisschen eingerostet. Ich glaube ich würde das so machen:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'variablen initialisieren
Dim endwert As Integer

' wenn es keine Zahl ist dann raus
If Not IsNumeric(Textbox1.Text) Then Exit Sub

'umwandeln in eine Zahl
endwert = CInt(Textbox1.Text)

'gaußsche Formel + umwandeln in string
Label1.Text = CStr((endwert * (endwert + 1))/2)

End Sub
Antwort bewerten Vielen Dank für Deine Bewertung

Hallo,

so funktioniert das nicht. Du setzt ja wert immer vor der Rechnung auf Null. Dieser Schritt muss außerhalb der Schlife stattfinden (wenn du ihn brauchst.) Den Wert braucht man nicht unbedingt. Es gibt bestimmt auch eine betimmte Funktion die das macht. Mir fällt aber der Name nicht ein. Das gibt es auch auf vielen Taschenrechnern. ...

Ich würde es so machen.

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As system.EventArgs) Handles Button1.Click

    Dim endwert, ergebnis, rechenweg As Integer

     endwert = Convert.ToInt16(Textbox1.Text) 'umwandlung in Integer hinzugefügt

    For rechenweg = 1 To endwert
        ergebnis = ergebnis + rechenweg 
             'Kurzschreibweise Ergebnis += Rechenweg

    Next

    Label1.Text = ergebnis.tostring

End Sub

End Class

Grüße

Antwort bewerten Vielen Dank für Deine Bewertung

"Es geht nicht!"

Das ist die Standardaussage in jedem Supportfall. WAS geht denn bitte nicht? WAS passiert denn da? Kommt ein Fehler? Was soll man denn mit dieser Aussage anfangen? Oder ist das ein Ratespiel?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Toraka
16.03.2012, 11:09

Was soll das denn eigentlich werden, was du da rechnest? Warum setzt du "wert" immer und immer und immer wieder auf "0", und warum addierst du immer und immer wieder 0 zu deinem Ergebnis??? Und an deine Variable, die eigentlich im Wert steigen sollte, setzt du immer auf irgendetwas, aber nicht auf das, was du eigentlich vor hast.

Lösche die Zeile "wert = 0" vollständig! Dann ersetze die anfolgende Zeile wie folgt:

ergebnis = ergebnis + rechenweg

Und schon hast du ein richtiges Ergebnis! Aber nur dann, wenn du in der TextBox Textbox1 einen Wert größer oder gleich 0 eingetragen hast. Trägst du Buchstaben ein, stürzt das Programm ab. Aber das ist eine andere Geschichte, die erzählen wir ein anderes Mal... (so, oder so ähnlich steht es in der "Die unendliche Geschichte" auf der letzten Seite).

0

du musst das "wert=0" vor die schleife ziehen.

in der schleife muss dann stehen:

wert= rechenweg + wert

und ausgabe dann entsprechend:

Label1.Text = wert

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?