Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 04.02.2008, 09:41 Titel: zahlen aus string |
|
|
ich such ein befehl um aus einem String (B$) in dem 2 zahlen z.b. 500+200 mit einem rechenoperator getrennt sind. jez brauch ich aber die beiden zahlen in einer eigenen variable. kann man das iwie raus extrahieren?? |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 338
|
Verfasst am: 04.02.2008, 13:01 Titel: |
|
|
Left$, Right$, Mid$, Instr sind die Befehle, die du brauchst. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Heizi
Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 04.02.2008, 13:25 Titel: |
|
|
Dafür brauchst du nen Formelparser.
Du findest einem Auf der QB Homepage unter Downloads im Mathe Bereich.
Ich hab auch mal einen programmiert wenn du willst kann
ich den Source mal posten (aber erst wenn ich daheim bin,
ich sitz hier nämlich gerade im Büro, hab Mittagspause und surf im Internet
)
MfG |
|
Nach oben |
|
|
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 04.02.2008, 13:39 Titel: |
|
|
klingt ganz schön kompliziert bin jez soweit das mein programm erkennt ob es + oder minus ist.... aber das andere hab ich noch nicht hinbekommen ...
Gruß Mr.Schrotti |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 04.02.2008, 14:10 Titel: |
|
|
danke da muss ich jez nur noch durchsteigen ..... gar nicht so einfach für nen anfänger ... |
|
Nach oben |
|
|
pinkpanther
Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 08.02.2008, 17:32 Titel: |
|
|
Hier ist meine Lösungsvariante. Vielleicht ist sie einfacher zu verstehen...
Code: | DEFINT A-Z
CONST ctOperatorenMenge$ = "+-*/"
DIM tRechenAufgabe$
DIM tOperand$(1 TO 2), iOperand(1 TO 2)
CLS
PRINT
PRINT "EINFACHER MATHE-PARSER"
PRINT
PRINT " Die beiden Operanden muessen positive Ganzzahlen im"
PRINT " Bereich von 0 bis 32767 sein. Die Rechenaufgabe"
PRINT " darf nur einen Operator aus der Menge der Grund-"
PRINT " rechenarten enthalten(+-*/). Leerzeichen vor und"
PRINT " nach den Operanden werden toleriert."
PRINT
INPUT " Rechenaufgabe: ", tRechenAufgabe$
IF LEN(tRechenAufgabe$) THEN
FOR i = 1 TO 4
tOperator$ = MID$(ctOperatorenMenge$, i, 1)
iPosOperator = INSTR(tRechenAufgabe$, tOperator$)
IF iPosOperator THEN
EXIT FOR
END IF
NEXT
IF iPosOperator THEN
tOperand$(1) = LEFT$(tRechenAufgabe$, iPosOperator - 1)
tOperand$(2) = MID$(tRechenAufgabe$, iPosOperator + 1)
FOR iNumOperand = 1 TO 2
tOperand$(iNumOperand) = LTRIM$(RTRIM$(tOperand$(iNumOperand)))
iLenOperand = LEN(tOperand$(iNumOperand))
IF iLenOperand THEN
FOR iZeichen = 1 TO iLenOperand
SELECT CASE MID$(tOperand$(iNumOperand), iZeichen, 1)
CASE "0" TO "9"
CASE ELSE
iNichtNumerisch = -1
EXIT FOR
END SELECT
NEXT
ELSE
iOperandFehlt = -1
END IF
IF iOperandFehlt OR iNichtNumerisch THEN
EXIT FOR
ELSE
iOperand(iNumOperand) = CINT(VAL(tOperand$(iNumOperand)))
END IF
NEXT
END IF
PRINT " Ergebnis: ";
IF iPosOperator THEN
IF NOT iOperandFehlt THEN
IF NOT iNichtNumerisch THEN
SELECT CASE tOperator$
CASE "+"
sErgebnis! = iOperand(1) + iOperand(2)
CASE "-"
sErgebnis! = iOperand(1) - iOperand(2)
CASE "*"
sErgebnis! = CSNG(iOperand(1)) * iOperand(2)
CASE "/"
IF iOperand(2) THEN
sErgebnis! = iOperand(1) / iOperand(2)
ELSE
iErgebnisUndefiniert = -1
END IF
END SELECT
IF iErgebnisUndefiniert THEN
PRINT " Division durch Null - Ergebnis undefiniert!"
ELSE
PRINT STR$(sErgebnis!)
END IF
ELSE
PRINT " Mindestens eine Stelle der Operanden ist nicht numerisch!"
END IF
ELSE
PRINT " Geben Sie bitte zwei Operanden an!"
END IF
ELSE
PRINT " Keinen Operator (+-*/) erkannt!"
END IF
END IF
END |
_________________ lG
pinkpanther |
|
Nach oben |
|
|
|