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.