C++ Simples Passwort Programm

flopower1996

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
401
Hey,
mein kleiner Bruder bereitet mir mal wieder Ärger. Sein Nachilfelehrer ist kruzfristig nicht da und jetzt muss ich mal wieder aushelfen. Meine Programmierkentnnisse sind etwas eingestaubt. Sie schreiben bald eine Klassenarbeit über Zeichenketten. Meint ihr, dass mein kleines selbstgeschriebenes Programm für relative Anfänger noch in Ordnung und verständlich ist? Hocke morgen neben ihm und probiere ihm etwas Nachhilfe zu geben...

Code:
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
/////////////////////////////////////////////////
#define PASSWORT "Hallo" //Hier Passwort setzten | Wichtig mit Anfuehrungszeichen
////////////////////////////////////////////////
int main()
{
	char zeichen; //Temp Speicher
	string passwort; //Passwort-String für Benutzereingabe
	string vpasswort = PASSWORT; //Vordefiniertes Passwort
	cout << "Passwort eingeben:" << endl;
	do
	{
		zeichen = _getch();
		cout << "*";
		if(zeichen!=0x0D)
		passwort.push_back(zeichen);
	} while (zeichen != 0x0D);
	cout << endl;
	if (vpasswort == passwort)
		cout << "Richtiges Passwort" << endl;
	else
		cout << "Falsches Passwort" << endl;
	cin.ignore();
return 0;

}

LG Flo
 
Ich persönlich hätte direkt schon 2 Fragen ;)

1. zeichen ist wie du selbst sagst eine temp Variable. Warum definierst du sie in der main methode und nicht erst im do-Block?
2. warum erstellst du die zusätzliche (lokale) Variable vpasswort, wenn du die (globale) variable PASSWORT hast?

Hab in c++ nur einmal ne Prüfung drin gehabt, kann also sein dass es ja duchaus sinn macht :D
Aber das wären so die fragen die bei mir als Nachhilfeschüler aufkommen würde ;)
 
1. Könnte ich in der Schleife machen. Habs jetzt einfach mal oben deklariert der Übersicht halber und was du mit globaler Variable meinst ist eine Präprozessorkonstante. Das
string vpasswort = PASSWORT;
wird durch das "Hallo" ersetzt im Bereich PASSWORT. Dort steht also nachher
string vpasswort = "Hallo";
 
Zuletzt bearbeitet:
flopower1996 schrieb:
1. Könnte ich in der Schleife machen.

Ne geht nicht. Die Deklaration wäre dann innerhalb der Schleife und deshalb auch nur in dem Block gültig. Die Variable könntest du so nicht in der Bedingung benutzen.
 
kinglouy schrieb:
Ne geht nicht. Die Deklaration wäre dann innerhalb der Schleife und deshalb auch nur in dem Block gültig. Die Variable könntest du so nicht in der Bedingung benutzen.

Ok, gut zu wissen. Deklariere außer bei for-Schleifen eigentlich immer oben...

EDIT: Aber jetzt bis mal auf ein paar Schönheitsfehler, meint ihr dass kann man einem relativem Anfänger erkären?
 
Zuletzt bearbeitet:
flopower1996 schrieb:
Ok, gut zu wissen. Deklariere außer bei for-Schleifen eigentlich immer oben...

Kein guter Stil, außer in Fällen, in dene es eben nicht anders geht. In C++ Variablen immer mit dem kleinstmöglichen Gültigkeitsbereich anlegen, so dass sie erst dann existieren, wenn sie wirklich benötigt werden und auch nicht länger. Dieser deklariere-alle-Variablen-ganz-oben-Stil ist ein Überbleibsel eines altertümlichen C-Dialekts und hat in modernem C++ nix verloren.

Außerdem würde ich noch dazu raten, das #define durch eine echte Konstante zu ersetzen. Präprozessordefines sind verpönt, da sie letzten Endes nichts weiter als stupide textuelle Ersetzungen sind, was bei Kollisionen zu manchmal gar nicht so einfach zu findenden Fehlern führen kann.
 
Zuletzt bearbeitet:
Zurück
Oben