Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

tag auch! - ich wollte mal kurz und knapp etwas erfragen,

unzwar: ich soll für mein praktikum einen rechner

programmieren,(als vorbild windows rechner) bis jetzt ohne

probleme, (also addition, subtraktion, multi, divi,

prozent und potenz) jetzt soll ich die funktionen

einer "klammer rechnung" einbauen O_o - wie das? ( als

beispiel schaut euch mal bei programme -> zubrhör -

> "rechner" an und geht auf ansicht, und wechselt

zu "wissenschaftlich") naja, ich hoffe es hat jemand

verstanden was mein prob is und kann mir helfen! knöpfe

für die anderen rechenarten habe ich schon gesetzt und als

case select mit den index-nummern als integer ausgewählt,

soll ich die klammer da jetzt auch reinhaun oder nicht?

naja- hoffe ihr könnt mir helfen! :mod: :D

Geschrieben

ist garnicht so einfach, zumindest wenn die klammerausdrücke sehr kompliziert werden. ne schöne technik in dem zusammenhang ist syntax-bäume zu verwenden, aber ich glaub du hast davon wohl noch nix gehört, oder?

man baut sich anhand der eingaben einen baum mit je zwei unterknoten pro hauptknoten auf. ein knoten ist entweder eine zahl, wenn es keine untergeordneten knoten besitzt, oder es entspricht einem rechenzeichen. je nachdem in welcher reihenfolge zahlen, rechenzeichen, klammer auf und klammer zu auftreten wird der baum konstruiert, heißt elemente werden zum beispiel unter- oder übergeordnet eingefügt. am schluß braucht der baum quasi nur noch durchgerechnet zu werden. ist zwar erstmal nicht so einfach, aber wenns einmal funktioniert, gehts dafür auch mit beliebig komplexen ausdrücken.

Geschrieben

aaaaaalso, ich hab zwar nich wirklich viel verstanden, aba das is erstmal der source-code ohne klammern, kannst du mir anhand eines kleinen "schubs" oder beispiels zeigen wie genau du das meinst plz? :)

________________________________________________________________

Option Explicit

Dim fblnErgebniss As Boolean

Dim flngButton As Long

Dim fdblZahl As Double

Private Sub cmd_neu_Click()

txtZahl1.Text = ""

flngButton = 0

End Sub

Private Sub cmdknopp_Click(index As Integer)

If txtZahl1.Text = "" Then Exit Sub

If index = 7 Then

flngButton = 0

txtZahl1.Text = txtZahl1.Text * CDbl((fdblZahl) / 100)

End If

If IsNumeric(txtZahl1.Text) = True Then 'Hier wird überprüft ob im Textfeld wirklich eine Zahl steht

If flngButton <> 0 Then 'in dieser "if anweisung" wird vorher festgestellt ob ein knopf "ungleich" der 0 gedrückt wurde

Select Case flngButton 'jeh nach index-nr. der zahl wird eine der folgenden rechenarten gewählt

Case 1

fdblZahl = fdblZahl + CDbl(txtZahl1.Text) 'Addition

Case 2

fdblZahl = fdblZahl - CDbl(txtZahl1.Text) 'Subtraktion

Case 3

fdblZahl = fdblZahl * CDbl(txtZahl1.Text) 'Multiplikation

Case 4

fdblZahl = fdblZahl / CDbl(txtZahl1.Text) 'Division

Case 5

txtZahl1.Text = fdblZahl ^ CDbl(txtZahl1.Text) 'potenz

Case 6

txtZahl1.Text = Sqr(txtZahl1.Text) 'Wurzel

End Select

Else

If index = 6 Then txtZahl1.Text = Sqr(txtZahl1.Text)

If index <> 7 Then fdblZahl = CDbl(txtZahl1.Text) 'falls vorher bereits eine andere rechenart benutzt wurde, wird diese in fdblZahl behalten

End If

flngButton = index 'hier wird durch die indexnummer unterschieden welcher knopf gedrückt wurde

Else

MsgBox "richtige zahl eintippen" = vbOKOnly ' falls im textfeld keine zahl eingegeben wurde, wird diese fehlermeldung angezeigt

Exit Sub

End If

If index < 6 Then txtZahl1.Text = ""

End Sub

Private Sub CmdErgebniss_Click() 'hier wird das ergebniss berechnet

Select Case flngButton

Case 1

txtZahl1.Text = fdblZahl + CDbl(txtZahl1.Text) 'Addition

Case 2

txtZahl1.Text = fdblZahl - CDbl(txtZahl1.Text) 'Subtraktion

Case 3

txtZahl1.Text = fdblZahl * CDbl(txtZahl1.Text) 'Multiplikation

Case 4

txtZahl1.Text = fdblZahl / CDbl(txtZahl1.Text) 'Division

Case 5

txtZahl1.Text = fdblZahl ^ CDbl(txtZahl1.Text) 'potenzrechnung

Case 7

txtZahl1.Text = fdblZahl + txtZahl1.Text 'prozentergebniss

End Select

flngButton = 0 'der startwert wird wieder auf 0 gesetzt

fblnErgebniss = True

End Sub

Private Sub cmdKomma_Click()

txtZahl1.Text = txtZahl1.Text & ","

End Sub

Private Sub cmdNummer_Click(index As Integer)

If fblnErgebniss = True Then

txtZahl1.Text = "" & index

Else

txtZahl1.Text = txtZahl1.Text & index

End If

fblnErgebniss = False

End Sub

Private Sub lblrechenweg_Click()

lblrechenweg = lblrechenweg & " " & fdblZahl

End Sub

Private Sub lblrechenweg_DblClick()

lblrechenweg = ""

End Sub

Geschrieben

na danke, stempel mich doch zum kompletten volltrottel ab... O_o ich weiss schon wie man klammern rechnet, was mich interesiert ist, wie man es programmieren kann, das der computer in klammern rechnet?! (btw.: es handelt sich hier um VB6.0!)

die sachen die in einer klammer stehen berechnest du erstmal separat und machst dann den rest...

2 * (2+3)

erst 2+3 rechnen

und dann 2 * dem ergebnis aus der kalmmer, also 5...

Geschrieben

Zwar ist VB 6 keine objektorientierte Sprache, aber man kann trotzdem im begrenztem Umfang Objekte erstellen. Sobald der Benutzer eine "("-Klammer eingibt verlässt Du die aktuelle Rechnung, erstellst Du ein neues Rechnungsobjekt und verarbeitest die Ergebnise solange bis die ")"-Klammer kommt, dann übergibst Du das Ergebnis an die unterbrochene Rechnung und arbeitest dann weiter.

Geschrieben

weisste was? ^^ das war der nötige schlag auf den hinterkopf den ich gebraucht habe :uli danke dir vielmals!!! :marine

Zwar ist VB 6 keine objektorientierte Sprache, aber man kann trotzdem im begrenztem Umfang Objekte erstellen. Sobald der Benutzer eine "("-Klammer eingibt verlässt Du die aktuelle Rechnung, erstellst Du ein neues Rechnungsobjekt und verarbeitest die Ergebnise solange bis die ")"-Klammer kommt, dann übergibst Du das Ergebnis an die unterbrochene Rechnung und arbeitest dann weiter.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...