PasswortAbgrage Programm läuft nicht?ich komme nicht weiter...



  • //PasswortAbfrage erstellen:

    #include <iostream>
    #include <conio.h>
    #include <string.h>
    #include <windows.h>

    bool passwortAbfrage(string);//zeigt immer Fehlermeldung

    using namespace std;

    int main(){
    for(int i=0;i<=2;i++){//max 3 Falsche Eingabe
    cout<<"Passwort: ";
    if (passwortAbfrage("hallo Welt")){
    cout<<"\nPasswort akzeptiert ";
    break;
    }else{
    Beep(500,50);
    Beep(500,50);
    cout<<"Falsches Passwort!";
    }

    }
    
    cin.sync();drückt
    			
    cin.get();
    return 0;
    

    }

    bool passwortAbfrage(string richtigesPasswort){

    char einZeichen;
    string ganzesPasswort;
    einZeichen=getch();
    
    while(einZeichen!=0x0D){//solange das eigegebene Zeiche nicht 
    						//die EnterTaste(0x0D im hexadezimal) ist
    
    	if(einZeichen!=0x08){//0x08 ist RuckTaste im Hexadezimal
    	ganzesPasswort+=einZeichen;
    								
    	putch("*");
    	}else if(einZeichen==0x08 && ganzesPasswort.length()-1 ){
    		
    		
    	ganzesPasswort.resize(ganzesPasswort.length()-1);
    	//letztes Zeichen löschen
    	
    	putch(0x08);
    			
    	putch("");
    	putch(0x08);
    
    	einZeichen=getch();			
    		
    	}
    	if (ganzesPasswort==richtigesPasswort){
    		return true;//Passwort und die Eingabe sind igentisch
    		}else {
    		return false;//Passwort und die Eingabe unterscheiden sich
    		}
    
    }
    

    }



  • @pook420 Du prüfst nach jedem Zeichen, ob das Passwort stimmt.

    (oder ich habe das mangels vernünftiger Formatierung falsch überblickt)



  • @DirkB sagte in PasswortAbgrage Programm läuft nicht?ich komme nicht weiter...:

    (oder ich habe das mangels vernünftiger Formatierung falsch überblickt)

    Ich war mal so frei, ohne zu wissen, ob der TO sich das so gedacht hat.

    //PasswortAbfrage erstellen:
    
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    #include <windows.h>
    
    bool passwortAbfrage(string);//zeigt immer Fehlermeldung
    
    using namespace std;
    
    int main()
    {
    	for (int i = 0; i <= 2; i++)
    	{//max 3 Falsche Eingabe
    		cout << "Passwort: ";
    		if (passwortAbfrage("hallo Welt"))
    		{
    			cout << "\nPasswort akzeptiert ";
    			break;
    		}
    		else
    		{
    			Beep(500, 50);
    			Beep(500, 50);
    			cout << "Falsches Passwort!";
    		}
    	}
    
    	cin.sync(); drückt
    
    		cin.get();
    	return 0;
    
    }
    bool passwortAbfrage(string richtigesPasswort)
    {
    	char einZeichen;
    	string ganzesPasswort;
    	einZeichen = getch();
    
    	while (einZeichen != 0x0D)
    	{//solange das eigegebene Zeiche nicht 
    							//die EnterTaste(0x0D im hexadezimal) ist
    
    		if (einZeichen != 0x08)
    		{//0x08 ist RuckTaste im Hexadezimal
    			ganzesPasswort += einZeichen;
    
    			putch("*");
    		}
    		else if (einZeichen == 0x08 && ganzesPasswort.length() - 1)
    		{
    
    
    			ganzesPasswort.resize(ganzesPasswort.length() - 1);
    			//letztes Zeichen löschen
    
    			putch(0x08);
    
    			putch("");
    			putch(0x08);
    
    			einZeichen = getch();
    
    		}
    		if (ganzesPasswort == richtigesPasswort)
    		{
    			return true;//Passwort und die Eingabe sind igentisch
    		}
    		else
    		{
    			return false;//Passwort und die Eingabe unterscheiden sich
    		}
    	}
    }
    
    
    
    
    
    
    
    


  • @zeropage Da fehlt noch bool passwortAbfrage(string richtigesPasswort){ zwischen Zeile 35 und 36.



  • Ahja, danke. Jetzt ergibt es auch Sinn. Habe ich oben korrigiert.



  • @DirkB Hallo Dirk,
    ja es wird nach jedem Zeichen geprüft ,ob das Passwort stimmt!
    Aber der große Fehler zeigte bei mir dass die Funktion:
    bool passwortAbfrage(string); Nicht deklariert wurde!
    Das Problem liegt nicht ins Detail sondern die Funktion!



  • Was sagt dir die Zeile darunter:

    bool passwortAbfrage(string);//zeigt immer Fehlermeldung
    
    using namespace std;
    

    ?

    PS: Des weiteren fehlt bei dir #include <string> (statt <string.h>).



  • @Th69 #include <string> (statt <string.h>).Danke es war ein Tipfehler!
    habe Felermeldung:
    9': **string' was not declared in this scope:**gemeint ist die Funktion...
    using namespace std;:
    Damit ich nicht überall bei cout oder cin nochmal schreiben musste!



  • Und dasselbe gilt eben auch für std::string.



  • @pook420 sagte in PasswortAbgrage Programm läuft nicht?ich komme nicht weiter...:

    using namespace std;:
    Damit ich nicht überall bei cout oder cin nochmal schreiben musste!

    Kannst du zwar machen, solange du es nur in .cpp-Dateien machst, aber der Aufwand für das Schreiben des zusätzlichen "std::" hält sich doch in Grenzen. Niemals solltest du das using namespace in Header-Dateien verwenden.

    Lies dazu bitte auch:
    https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rs-using
    https://isocpp.org/wiki/faq/coding-standards#using-namespace-std

    Also: wenn du dir dieser Guidelines/FAQ bewusst bist und nur nen kleines Progrämmchen hast, wo es sowieso keine Kollisionen mit Namen gibt, kannst du using namespace std in der cpp-Datei verwenden. Generell rate ich aber sonst davon ab.



  • @wob Hallo Wob,
    mein Programm läuft jetzt !!!
    using namespace std;:war falsch aus Versehen platziert ,
    die Zeilen mit
    bool passwortAbfrage(string);//zeigt immer Fehlermeldung
    und mit:
    using namespace std;
    waren vertauscht!!!
    Aber Danke für die Hinweise von dir auch!!!



  • @Th69 hallo Th69

    mein Programm läuft jetzt !!!
    using namespace std;:war falsch aus Versehen platziert ,
    die Zeilen mit
    bool passwortAbfrage(string);//zeigt immer Fehlermeldung
    und mit:
    using namespace std;
    waren vertauscht!!!
    Aber Danke !!



  • @zeropage
    Das Programm läuft jetzt !!!
    using namespace std;:war falsch aus Versehen platziert ,
    die Zeilen mit
    bool passwortAbfrage(string);//zeigt immer Fehlermeldung
    und mit:
    using namespace std;
    waren vertauscht!!!
    Aber Danke !


  • Mod

    Ich glaube, sie haben's kapiert. Du musst nicht jedem persönlich den gleichen Dankesbeitrag schreiben.


Log in to reply