Also ich habe ein Problem mit einem Programm (Laufzeitfehler)
das Programm soll einen String einlesen und ausrechnen und das ergebnis ausgeben
nur immer wenn ich es starte kommt en windows- Fehlermeldung:
Alles anzeigen
ich kann einfach keinen Fehler dinden :cry: ich hoff man kann mir helfen
das Programm soll einen String einlesen und ausrechnen und das ergebnis ausgeben
nur immer wenn ich es starte kommt en windows- Fehlermeldung:
Quellcode
- #include <iostream>
- #include <cstdlib>
- #include <conio.h>
- using namespace std;
- enum tToken
- {
- PLUS, MINUS, MUL, DIV, LPAR, RPAR, NUMBER, END, ERROR
- };
- tToken aktToken;
- double TokenZahlenWert;
- char *srcPos;
- tToken sucheToken()
- {
- aktToken = ERROR;
- if (*srcPos==0)
- {
- aktToken = END;
- }
- else
- {
- switch (*srcPos)
- {
- case '(': aktToken=LPAR; break;
- case ')': aktToken=RPAR; break;
- case '*': aktToken=MUL; break;
- case '/': aktToken=DIV; break;
- case '+': aktToken=PLUS; break;
- case '-': aktToken=MINUS; break;
- }
- if (*srcPos>='0' && *srcPos<'9')
- {
- aktToken=NUMBER;
- TokenZahlenWert = 0.0;
- }
- while (*srcPos>='0' && *srcPos<'9')
- {
- TokenZahlenWert *= 10;
- TokenZahlenWert += *srcPos-'0';
- srcPos++;
- }
- if (aktToken != NUMBER)
- {
- srcPos++;
- }
- }
- return aktToken;
- }
- tToken Error(char *s)
- {
- cerr << s << endl;
- return ERROR;
- }
- double PlusMinus();
- double Klammern()
- {
- double Wert;
- switch(aktToken)
- {
- case NUMBER:
- sucheToken();
- return TokenZahlenWert;
- case MINUS:
- sucheToken();
- return -Klammern();
- case LPAR:
- sucheToken();
- Wert = PlusMinus();
- if (aktToken != RPAR)
- {
- return Error(") expected");
- }
- sucheToken();
- return Wert;
- case END:
- return 1;
- }
- return Error("primary expected");
- }
- double MulDiv()
- {
- double Wert;
- Wert = Klammern();
- while (aktToken==MUL || aktToken==DIV)
- {
- if (aktToken==MUL)
- {
- sucheToken();
- Wert *= Klammern();
- }
- else if (aktToken==DIV)
- {
- sucheToken();
- Wert /= Klammern();
- }
- }
- return Wert;
- }
- double PlusMinus()
- {
- double Wert;
- Wert = MulDiv();
- while (aktToken==PLUS || aktToken==MINUS)
- {
- if (aktToken==PLUS)
- {
- sucheToken();
- Wert += MulDiv();
- }
- else if (aktToken==MINUS)
- {
- sucheToken();
- Wert -= MulDiv();
- }
- }
- return Wert;
- }
- double Auswertung(char *s)
- {
- srcPos = s;
- sucheToken();
- return PlusMinus();
- }
- int main(int argc, char* argv[])
- {
- double Wert = Auswertung(argv[1]);
- cout << Wert << endl;
- return 0;
- }
ich kann einfach keinen Fehler dinden :cry: ich hoff man kann mir helfen