001
29.04.2005, 08:42 Uhr
doppler
|
Unstrukturierte Sprünge (so heißen glaube ich goto anweisungen) sind meiner Meinung nach kein guter Stil. Man sollte sie wenn möglich vermeiden (und das ist soweit ich weiß immer möglich, indem man Schleifen und if-Abfragen benutzt).
Wenn du schon strings und iostreams verwendest, kannst du dir auch andere Möglichkeiten der STL zunutze machen. Ich würde z.B. die Benutzerdaten als map Name->Passwort implementieren. Hier ein (verbesserbarer) Vorschlag:
C++: |
#include <map> #include <iostream> #include <string> using namespace std;
int main() { map<string,string> users; //users als map Name->Passwort
string name = ""; string paswrd = "";
users["DragicMaster"] = "123"; //Passwort von "DragicMaster" ist "123". users["Dragic"] = "456"; users["Gutts"] = "789"; users["Bommel"] = "000";
cout<<"Wie heist du?"; cin>>name; char eingabe = 'j'; while ((users.find(name) == users.end()) && ((eingabe == 'j') || (eingabe == 'J')) ){ //name nicht gefunden in users
cout<<"Dich kenne ich nicht!"; cout<<"Möchtest du dich an melden?"; cin>>eingabe; if ((eingabe == 'j') || (eingabe == 'J')) { cout<<"Gib deinen Namen an!\n"; cin>>name; cout<<"Nun dein passwort!\n"; cin>>paswrd; users[name]=paswrd; }; cout<<"Wie heist du?"; cin>>name; }; if ((eingabe == 'j') || (eingabe == 'J')) { cout<<"Danke für die Anmeldung!\n"; cout<<"Du bist " << name << endl; cout<<"Danke für die nutzung" << endl; }; }
|
Die user-Daten und Passworte als zwei getrennte Arrays von Strings zu speichern, ist sicher ziemlich fehleranfällig, und die Verwaltung von arrays ist nicht so einfach wie bei den STL-Containern. Bei der Geschwindigkeit gibt es angeblich auch keine großen einbußen, aber das kommt logischerweise auf die Implementierung der STL an. Beim find() von map skaliert die Suchdauer mit log(n). |