Projekt Euler 08 -> stoi()



  • Ich stecke gerade fest beim Lösen vom 8ten Problem bei ProjectEuler. https://projecteuler.net/problem=8

    Ich übergebe doch ein korrektes Argument an stoi() weiter?

    Bin noch Anfänger, vielleicht ist meine Lösung kompletter Schwachsinn. Mich interessiert aber wieso diese Fehlermeldung ausgegeben wird.
    Tipps sind willkommen, ich will diese Aufgabe aber selber lösen können. 😃

    Ich habe versucht den String im stoi() in einem seperaten String zu speichern. trotzdem gab es die selbe Fehlermeldung. Ja, ich habe es schon mit google probiert

    #include <iostream>
    #include <string>
    
    int main()
    {
    
        std::string n = ""; // Diese riesige Zahl
        int gProdukt=0; // grösstes Produkt
        int nProdukt=1; // neues Produkt
        int zahl=0;
        int y=0;
    
            while(y<=n.length()){
    
                for(int x=y; (x-y)<13; x++)
                {
                    zahl=stoi(n.substr(y, 1));
    
                    nProdukt *= zahl;
    
                    if(nProdukt > gProdukt){
                        gProdukt = nProdukt;
                    }
    
                }
                nProdukt = 0;
    
                y++;
            }
    
        std::cout << gProdukt;
    
        return 0;
    }
    

    Fehler:

    terminate called after throwing an instance of 'std::invalid_argument'
    what():stoi
    

    Danke im Voraus



  • Unbekanntttt schrieb:

    Ich übergebe doch ein korrektes Argument an stoi() weiter?

    Nö. Wir sehen zwar dein n nicht, was du da übergeben willst, aber deine while läuft jedenfalls ein zu weit.
    => stoi kriegt leer-string => fehler.



  • Außerdem bekommst du ab dem zweiten while durchlauf immer 0 raus, wegen

    nProdukt = 0;
    

    Edit: Außerdem solltest du nochmal überlegen wo du den Vergleich für das Maximum machst bzw. machen solltest 😉



  • danke vielmals für eure Unterstützung!!!!!! 😃
    Hab es geschafft.


Anmelden zum Antworten