Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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]

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?

achso danke aber mein Fehler wurde noch nciht behoben. hatte geschrieben, dass wenn ich BN richtig eingebe und PW falsch werde ich aufgefordert nochmal PW einzugeben aber wenn ich es richtig eingebe danach steht da das es trotzdem falsch ist

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

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.

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

Owww ist fehler drin. Auch wenn ich BN richtig eingebe steht dort das ichd ann pw eingeben kann aber sofort press any key to contuniu also dieses break schliesst das Programm

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.

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

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.

ich danke dir. Ich werde alles dran tun und diese schei.e verstehen

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);


}

ja oder so bzw der lehrer wollte es so haben

Ist aber auch nicht grad wirklich elegant die Lösung...

Ich will ja nicht an der Kompetenz der Lehrer zweifeln, aber richtig hübsch ist die ja nicht gerade

Der lehrer is bissel älter. Ich zweifel auch an Ihm

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.