prog für password funztz i-wie nich
-
Wo kann ich die finden??
-
Einfach ein <cpp></cpp> um den Code herum, natürlich mit eckigen statt spitzen Klammern.
-
#include <iostream> using namespace std; class Password{ private: string currentPw; static int counter; public: void setPw(string); string getPw(); }; int Password::counter = 0; int main() { void run(); run(); std::cin.get(); } void run(){ Password password; string newPw; cout<<"altes Passwort: "<<password.getPw()<<endl; cout<<"Bitte das neue Passwort eingeben\n"; cin>>newPw; password.setPw(newPw); std::cin.get(); } void Password::setPw(string newPw){ if(currentPw!=""){ string eingabe; cout<<"Bitte das alte Passwort eingeben"<<endl; cin>>eingabe; std::cin.get(); if(eingabe ==currentPw){ currentPw = newPw; cout<<"Passwort geändert"; std::cin.get(); }else if(counter<3){ counter++; cout<<"Falsches Passwort \nSie haben noch "<<3-counter<<" Versuche"<<endl; cout<<"Bitte das neue Passwort eingeben\n"; cin>>newPw; run(); std::cin.get(); }else{ cout<<"Programm gesperrt\n"; std::cin.get(); } }else{ currentPw = newPw; run(); std::cin.get(); } } string Password::getPw(){ return currentPw; }
-
schaich schrieb:
... int main() { void run(); run(); ...ähhh - das hat Dir bestimmt der Compiler angemahnt. Also mal in die Warnings sehen ....
Tipp: "void run();" ist da falsch und braucht's nicht...
Gruß,
Simon2.
P.S.: Mit Codeeinrückungen sehen nicht nur wir, sondern auch Du besser, was los ist.
(sind aber vermutlich TABs, die beim Copy/Paste hierhin verloren gegangen sind)
-
ja ich hab nur keinen anderen namen gefunden...
Oder was meinst du??
-
ist auch keine warnung...
-
void run(); int main() { run(); std::cin.get(); }
-
Achso.
Macht aber keinen Unterschied.schaich
-
schaich schrieb:
ja ich hab nur keinen anderen namen gefunden...
Oder was meinst du??Wie der Namenskollege schon andeutete: Am "Namen" liegt's nicht.
Du definierst Dir da eine Variable namens "run" und die rufst Du in main() auf ... nicht "die run()", die Du außen definiert hast.Gruß,
Simon2.
-
1. Inkludier <string>
2. Schreibe in der main routine ein return statement.Dann sollte es wenigstens kompilieren.
Gruss Simon
-
alles wie gehabt....
der merkt immernoch nicht dass ich ein passwort eingegeben hab...schaich
-
ja, aber vorher hats doch gar nicht korrekt kompiliert.
auf jedenfalls kannst du jetzt debuggen. dann findest du den fehler bestimmt.
-
Das ist auch eine endloss rekursion.

EDIT:
void Password::setPw(string newPw){ if(currentPw!="") { // hier kommt er nie an
-
Ich wollte nur mal anmerken dass eine lokale Funktionsdeklaration sowie ein fehlendes return in main in C++ vollkommen legal sind.
-
@LordJaxom
Ok, danke. Das fehlende return in in main generiert allerdings eine warning (vc++6.0). ev. ist das bei neueren kompilern nicht mehr der fall.
-
simon.gysi schrieb:
vc++6.0
... generiert noch deutlich mehr Probleme. Sofern man nicht gezwungen ist vc++ 6.0 zu verwenden sollte man davon (u.a. wegen fehlernder Standardkonformität) eh gewaltigen Abstand nehmen.
-
Anmerkung schrieb:
simon.gysi schrieb:
vc++6.0
... generiert noch deutlich mehr Probleme. Sofern man nicht gezwungen ist vc++ 6.0 zu verwenden sollte man davon (u.a. wegen fehlernder Standardkonformität) eh gewaltigen Abstand nehmen.
Danke für den Hinweis. Leider bin ich beim momentanen Projekt gezwungen. Ansonsten sind mit konformere und komfortablere IDE / Compiler auch lieber.
-
Wie kann ich denn Abfragen, ob ein Strin quasi leer ist also kein Zeichen hat??
MfG schaich
-
Hat sich erledigt, hab gar nicht gesehen, dass ich nur ein Gleichzeichen geschrieben hab.
-
steht in jeder C++-Referenz unter "strings"
www.cplusplus.com/reference
www.cppreference.com