Rechnungen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Phlox

Betreff: Rechnungen

BeitragDo, Okt 25, 2007 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich hab mich mal hingesetzt und angefangen einen kleinen
einfachen Scriptinterpreter zu schreiben. Nun, ich muss natürlich
auch mit dem Ding rechnen können. Daher hab ich mir eine kleine
Rechenfunktion geschrieben. Warum funktioniert diese nicht?
Ich habe tagelang nachgedacht und mich dadurch davor gedrückt, indem
ich eine IDE mit VisualBasic geschrieben habe. Embarassed

Code: [AUSKLAPPEN]
zhl=Rechnen("322-2")
Print zhl
WaitKey
End

Function Rechnen(r$)
Local I
Local ergebnis
Local lrch ;(=letztes Rechenzeichen)

If Instr(r$,"+")=0 And Instr(r$,"-")=0 And Instr(r$,"/")=0 And Instr(r$,"*")=0 Then Return r$


For I=1 To Len(r$)
If Mid(r$,I,1)="+" Then ergebnis=ergebnis+Int(Mid(r$,lrch+1,I-(lrch+1))):lrch=I
If Mid(r$,I,1)="-" Then ergebnis=ergebnis-Int(Mid(r$,lrch+1,I-(lrch+1))):lrch=I
If Mid(r$,I,1)="*" Then ergebnis=ergebnis*Int(Mid(r$,lrch+1,I-(lrch+1))):lrch=I
If Mid(r$,I,1)="/" Then ergebnis=ergebnis/Int(Mid(r$,lrch+1,I-(lrch+1))):lrch=I
Next

Return ergebnis
End Function

Markus2

BeitragDo, Okt 25, 2007 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
zerlege es doch erstmal in zwei Werte und dem Operator(oder wie das heißt)

select o
case "+"
e=a+b
case "-"
e=a-b
case "*"
e=a*b
case "/"
e=a/b
end select

ozzi789

BeitragDo, Okt 25, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs nicht ganz begriefn was du genau willst...

Hier wär ein notbedürftiger rechner

Code: [AUSKLAPPEN]

   AppTitle "Calculator V.1.3", "Are you sure?"

   Graphics 800,600,16,2

logo = LoadImage("c:\Graphics\calclogo.bmp")

HidePointer
ClsColor 14,36,114
Cls

DrawImage logo,500,400
Locate 760,430

Locate 755,430
Print"1.3"


Locate 280,0
Print "Welcome to Calculator V.1.3"
Locate 280,15
Print "___________________________"
Locate 280,35
Print "       Built by Oz       "


Print ""
Print ""
Print ""
Print ""
Print ""
Print " Type 1 for + "
Print " Type 2 for - "
Print " Type 3 for * "
Print " Type 4 for / "
Print " Type End to End"
Print ""



.aba

Wahl$ = Input ("Type Number and Press Enter to Start   => ")
 Select Wahl

  Case "1"         Goto plus                                        
   Case "2"         Goto minus
    Case "3"        Goto times                                  
     Case "4"       Goto divide   
      Case "End"      End
       Case "end"      End         
   
   Default
   
   Print "" Print " Invalide Input, please Type 1-4  "  Print "" Goto aba

End Select



.plus
   
    Print ""
   Print ""
   Print " Please type first number"
   Print " Please type second number"
   Print "--------------------------"
z1#=Input ("First Number  ")

If z1= End Then End
Print "   +"
z2#=Input ("Second Nubmer  ")
If z2= End Then End
Print""
ergebniss1# = z1+z2
Print ergebniss1  Print"" Goto aba



.minus

    Print ""
   Print ""
   Print " Please type first number"
   Print " Please type second number"
   Print "--------------------------"
z1#=Input ("First Number  ")
If z1= End Then End
Print "     -"
z2#=Input ("Second Number  ")
If z2= End Then End
Print""
ergebniss1# = z1-z2
Print ergebniss1 Print"" Goto aba





.times

   Print ""
   Print ""
   Print " Please type first number"
   Print " Please type second number"
   Print "--------------------------"
z1#=Input ("First Number  ")

If z1= End Then End
Print "     *"
z2#=Input ("Second Number  ")

If z2= End Then End
Print""
ergebniss1# = z1*z2
Print ergebniss1 Print"" Goto aba



.divide

    Print ""
   Print ""
   Print " Please type first number"
   Print " Please type second number"
   Print "--------------------------"
z1#=Input ("First Number  ")

If z1= End Then End
Print "     /"
z2#=Input ("Second Number  ")

If z2= End Then End
Print""
ergebniss1# = z1/z2
Print ergebniss1 Print"" Goto aba




Repeat Until KeyHit(1)

End
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Markus2

BeitragDo, Okt 25, 2007 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@ozzi789
sag mir doch mal warum man 1 2 3 4 eingeben muß
und nicht direkt + - * / ???
 

Phlox

BeitragDo, Okt 25, 2007 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich wollte ich aus einem String alle Rechenschritte auslesen, da
Blitz ja sowas nicht kann:
r$="5+4"
m=r$

dan ist m ja nicht 5+4 (also 9) sondern 0, da die Rechnung in r$ nicht erkannt wird. SRY, wenn ich mich in meinem ersten Post nicht genau
genug ausgedrück habe.

BladeRunner

Moderator

BeitragDo, Okt 25, 2007 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Der trick ist es die Strings zu zerlegen, nach den einzelnen Rechenoperationen zu suchen und dann passend zu verzweigen.

Und deine Signatur ist viel zu lang, Phlox, kürz die bitte.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Tankbuster

BeitragDo, Okt 25, 2007 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann musst du einfach mit MID$ die Zahl(en) vor dem +-/* rausfiltern und dann +-/* Die Zahl(en) nach dem +-/* nehmen (bis zum nächsten +-/*). Und das solang, bis kein +-/* mehr hinten im String steht Wink
Twitter
Download Jewel Snake!
Windows|Android
 

Phlox

BeitragDo, Okt 25, 2007 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, ok... ich werde die Funktion noch mal neu schreiben.
@BladeRunner:Sorry, ist die Signatur so besser?

BladeRunner

Moderator

BeitragDo, Okt 25, 2007 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Perfekt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group