Zum Inhalt springen

Passwort abfrage! max 3 versuche


muca89

Empfohlene Beiträge

So oder was?
Das hat sich nicht wirklich verbessert. Eingerückt werden Schleifenkörper und if/else-Blöcke, keine einfachen Sequenzen.

So sollte das aussehen:

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

using namespace std;

void main()

{
string bn="";
string pw="";

char zeichen;

cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!";

while(true)
{

zeichen=getch();

if(zeichen!=13)
{
bn = bn + zeichen;
cout<<"*";

}
else break;

}


if(bn=="Chef")
{
cout<<"\n\n\t Ihr Benutzername ist richtig!" << endl << endl;
}
else
cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch" << endl << endl;

cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>";

for (int i=3; i>=1;i--)
{
while(true)
{
zeichen=getch();
if(zeichen!=13)
{
pw = pw + zeichen;
cout<<"*";
}
else break;
}

if(pw=="Entropie 48" && bn=="Chef")
{
cout<<"\n\n\t Zugang erlaubt!" << endl << endl;
break;
}
else
cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch" << endl << endl;

cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!";
}
}[/CODE]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Noch ein paar Kommentare:

- Die Initialisierung der Strings mit "" ist unnötig

- Benutzernamen werden üblicherweise bei der Eingabe nicht durch Sternchen ersetzt.

- Wenn man einen falschen Benutzernamen eingibt, warum kommt man dann überhaupt zur Passwortabfrage?

Stimmt aber

1. Benutzername mit sternchen. Wenn ich das sternchen weg tu dann gebe ich was ein ich sehe es aber net

2. Ich bin die ganze Zeit am überlegen wie ich es weg bekomme das wenn ich BN falsch eingebe das alles abbricht und nciht trotzdem PW abfrage kommt

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Benutzername mit sternchen. Wenn ich das sternchen weg tu dann gebe ich was ein ich sehe es aber net
Weil du mit getch einliest. Das ist ja der ganze Sinn von getch: Dass man nicht sieht, was eingegen wird. Du könntest natürlich zeichen ausgeben. Aber du kannst auch einfach eine "normale" Eingabefunktion benutzen, z.B. getline.

2. Ich bin die ganze Zeit am überlegen wie ich es weg bekomme das wenn ich BN falsch eingebe das alles abbricht und nciht trotzdem PW abfrage kommt
Pack die ganze Passwortabfrage in einen if-Block, der nur betreten wird, wenn der Benutzername passt.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok habe es hinbekommen das wenn ich BN falsch eingebe das Programm abbricht

#include <iostream>

#include <string>

#include <conio.h>


using namespace std;


void main()


{

	string bn;

	string pw;


	char zeichen;


	cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!";


	while(true)

	{


		zeichen=getch();


		if(zeichen!=13)

		{

			bn = bn + zeichen;

			cout<<"*";


		}

		else break;


	}



	if(bn=="Chef")

	{

		cout<<"\n\n\t Ihr Benutzername ist richtig!" << endl << endl;

	}

	else

		cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch" << endl << endl;	



	if(bn=="Chef")


	cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>";


	for (int i=3; i>=1;i--)

	{

		break;


		while(true)

		{

			zeichen=getch();

			if(zeichen!=13)

			{

				pw = pw + zeichen;

				cout<<"*";

			}

			else break;

		}


		if(pw=="Entropie 48" && bn=="Chef")

		{

			cout<<"\n\n\t Zugang erlaubt!" << endl << endl;

			break;

		}

		else

			cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch" << endl << endl;	


		cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!";

	}

}

Jetzt müssen wir nur noch klären wenn ich BN richtig eingebe und PW falsch und ich aufgefordert werde neu einzugegen und ich richtig PW eingebe das das programm nicht sagt das es falsch ist

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hättest du dir frühzeitig angewöhnt, deinen Code ordentlich einzurücken, hättest du gleich gesehen, dass die einzige Zeile, die von dem if(bn=="Chef") abhängt, die cout-Zeile danach ist. Wenn du nach if keinen Block (geschweifte Klammern) machst, bezieht sich das nur auf die nächste Anweisung.

Und das break, das du da eingefügt hast, bricht deine Schleife sofort wieder ab. Und da danach nichts mehr kommt, ist eben das Programm beendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Boah ich raste gleich aus. ich sitze bestimmt seit 5 stunden an der aufhabe habe es immernoch net ganz richtig.

@ Klotzkopp

würdest du mir den gefallen tun und bitte mir das Programm komplett richtig hier rein schreiben. ich wär dir sehr dankbar. Ich bin wirklicks eit midnestens heute mittag 13 uhr an der Aufgabe aber immer geht was schief

Link zu diesem Kommentar
Auf anderen Seiten teilen

würdest du mir den gefallen tun und bitte mir das Programm komplett richtig hier rein schreiben. ich wär dir sehr dankbar.
Wie gesagt, ich glaube, dadurch lernst du nichts.

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

int main()
{
string bn;
cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!";
getline( cin, bn );

if(bn!="Chef")
{
cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch\n\n";
return 0;
}
cout<<"\n\n\t Ihr Benutzername ist richtig!\n\n";
cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>";

for (int i=3; i>=1; --i)
{
string pw;
char zeichen = '\0';
while( (zeichen=getch()) != 13 )
{
pw += zeichen;
cout<<'*';
}
if(pw=="Entropie 48")
{
cout<<"\n\n\t Zugang erlaubt!" << endl << endl;
break;
}
cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch\n\n";
cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!";
}
}[/code]

Ich bin wirklicks eit midnestens heute mittag 13 uhr an der Aufgabe aber immer geht was schief
Das liegt IMHO daran, dass du falsch an die Aufgabe herangehst, und einige ziemlich große Lücken in den Grundlagen hast. Daran solltest du arbeiten, bevor du dich an die nächste Aufgabe machst.
Link zu diesem Kommentar
Auf anderen Seiten teilen

So hier ist die Lösung die wir heute im Unterricht gemacht haben

#include <iostream>

#include <string>

#include <conio.h>


using namespace std;


void main()


{

	string benutzername;

	string passwort;

	char zeichen;

	int a=3;

	do

	{

		cout <<"\n\n\tBitte geben Sie ihren Benutzernamen ein !";

		cin >> benutzername;


		cout <<"\n\n\tGeben Sie ihr Passwort ein! Sie haben noch " << a <<" Versuche ";

		a--;

		passwort="";


		while(true)

		{


			zeichen = getch();


			cout << "*";


			if(zeichen !=13)

				passwort = passwort + zeichen;

			else break;

		}

		{


			if(passwort=="Entropie 48" && benutzername=="Chef")

			{

				cout << "\n\n\tZugang erlaubt" <<endl;

				exit(0);

			}

			else

				cout <<"\n\n\tKein Zugang"<< endl;


		}


		if(a==0)

			cout <<"\n\n\tDas Programm wird beendet, da das Passwort 3x Falsch eingegeben wurde." << endl << endl;

	}

	while(a>0);


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...