Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

zahlen aus string

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mr.Schrotti



Anmeldungsdatum: 05.12.2007
Beiträge: 13

BeitragVerfasst am: 04.02.2008, 08:41    Titel: zahlen aus string Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 338

BeitragVerfasst am: 04.02.2008, 12:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 04.02.2008, 12:25    Titel: Antworten mit Zitat

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
grinsen )
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr.Schrotti



Anmeldungsdatum: 05.12.2007
Beiträge: 13

BeitragVerfasst am: 04.02.2008, 12:39    Titel: Antworten mit Zitat

klingt ganz schön kompliziert grinsen 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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 04.02.2008, 12:43    Titel: Antworten mit Zitat

Hallo,

der folgende Quelltext ist zwar nicht optimiert, aber er tut das Gewünschte: http://www.freebasic-portal.de/fbporticula/462 zwinkern


Zum Vergrößern anklicken.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr.Schrotti



Anmeldungsdatum: 05.12.2007
Beiträge: 13

BeitragVerfasst am: 04.02.2008, 13:10    Titel: Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
Hallo,

der folgende Quelltext ist zwar nicht optimiert, aber er tut das Gewünschte: http://www.freebasic-portal.de/fbporticula/462 zwinkern


Zum Vergrößern anklicken.

Viele Grüße!
Sebastian


danke lächeln da muss ich jez nur noch durchsteigen ..... mit dem Kopf durch die Mauer wollen gar nicht so einfach für nen anfänger ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 08.02.2008, 16:32    Titel: Antworten mit Zitat

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 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz