problem bei der addition von 'char'-elementen...



  • ich versuche einen taschenrechner zu simulieren. beim versuch zwei typen vom typ char zu addieren gibt es dann aber ein problem. mir fehlt also noch eine funktion die die variablen addiert. wie könnte das aussehen?
    vielleicht irgendwas mit dem makro 'isdigit(c)'?
    thx im voraus!

    long zahl(char& c) {
    ???
    }
    
    int main(int argc, char *argv[])
    {
        char eingabe;
        long a;
        vector<char> veingabe;
    
        while (true) {
            cout << "\n>>";
            cin.get(eingabe);
    	veingabe.push_back(eingabe);
    	if (eingabe != 'e') {
    	    for(int x = 0; x <= veingabe.size(); x++) {
                    if(veingabe[x] == '+') {
    	        a=zahl(veingabe[x-1])+zahl(veingabe[x+1]); //fehler
    	        }
                }
    	cout<<a;
    	}
    	else break;
        }
    
      return EXIT_SUCCESS;
    }
    


  • Warum liest du nicht sofort Zahlen von der Konsole ein?

    int x;
    cin >> x;



  • weil ich in form: 2+2 eingebe und + kein int ist.



  • char op;
    int a,b;
    cin >> a >> op >>b;
    


  • check das mit dem at () Zugriff und catch out_of_range. Möglicherweise überschreitest du den Index.



  • ich will doch nur char in ints umwandeln,

    und zu dem...

    ZuK schrieb:

    char op;
    int a,b;
    cin >> a >> op >>b;
    

    die sache soll variabel bleiben also zum beispiel:
    (5+2)*3-8



  • ich will sowas wie einen taschenrechner simulieren



  • beehre die suchfunktion unter : taschenrecher,parser,automatentheorie etc, und du wirst in antworten ersticken 😉



  • falls es irgend jemand doch noch interessiert(bezweifle ich zwar) hier ist meine doch noch kürzlich gefundene LSG:

    long ziffer(char& c) {
        long z = 0;
        if (isdigit(c)) {
            z = static_cast<int>(c) - static_cast<int> ('0');
        }
        return z;
    }
    


  • eisbein schrieb:

    die sache soll variabel bleiben also zum beispiel:
    (5+2)*3-8

    dann am besten ein parser-generator wie yacc, antlr ...
    sonst wird die sache schnell aufwändig und auch sehr fehleranfällig.
    K.



  • was ist ein parsergenerator?



  • benutz die forsuche mit den links die ich dir gegeben hab.


Log in to reply