Dann schlage mir Seiten vor, wo ich was finde....
Die Aufgabe ist dermaßen trivial, da wirst du im Internet nichts zu finden. Das ist offensichtlich als leichter Einstieg in das Aufgabenblatt gedacht.
Ich gehe jetzt - zu deinen Gunsten - einfach mal davon aus, du bist noch total neu in der Welt der Informatik und weißt schlicht noch nicht wie man an solche Aufgaben herangeht.
Deshalb hier der Gedankengang wie man sich an die Lösung herantastet:
Du hast
generiereZufallszahl()
,
toChar()
und den
+
-Operator zur Konkatenation.
Da uns das Problem "Erstelle Zufallspasswort aus 8 Zeichen" im Moment zu schwer fällt, brechen wir das Problem in kleinere Stückchen. Versuchen wir es mit "Erstelle ein einzelnes Zufallszeichen".
Hierbei hilft uns offensichtlich der
+
-Operator nicht weiter. Wir verbleiben also mit
generiereZufallszahl()
und
toChar()
.
Was kann ich damit anfangen?
Naja, ich kann z.B. das hier machen:
char c = toChar(i); // i is an int
Bloß, da fehlt mir ja ein Integer den ich da einsetzen kann...?
Andererseits kann ich auch das hier machen:
int x = generiereZufallszahl(j); // j is an int
Der Wert von
j
entscheidet dabei, in welchem Bereich die erzeugte Zufallszahl
x
liegt (von 0 bis einschließlich j).
Hmm, ich kann natürlich auch konkrete Werte einsetzen:
C:
char c = toChar(34); // entspricht '!'
int x = generiereZufallszahl(10); // irgendwas von 0 bis 10
c = toChar(49); // entspricht '0'
x = generiereZufallszahl(15); // irgendwas von 0 bis 15
c = toChar(100); // entspricht 'd'
x = generiereZufallszahl(200); // irgendwas von 0 bis 200
Jetzt mal angenommen ich möchte ein zufälliges Zeichen aus der ASCII-Tabelle. Dann könnte ich ja das hier machen:
C:
int x = generiereZufallszahl(127);
char c = toChar(x);
// c ist zufälliges ASCII-Zeichen
Da sind jetzt natürlich ein Haufen nicht darstellbarer Zeichen dabei (z.B. LF = LineFeed). Die wollen wir laut Aufgabe ja eigentlich nicht drin haben:
Jeder Mitarbeiter benutzt an seinem PC ein achtstelliges Passwort, welches Groß- und Kleinbuchstaben sowie Ziffern und Sonderzeichen besitzt.
Groß- und Kleinbuchstaben und Ziffern und Sonderzeichen. Ein Blick in die Tabelle zeigt, dass wir das erste gültige Zeichen, das Ausrufezeichen, beim Wert 33 finden. Von dort an sind alles Buchstaben, Ziffern oder Sonderzeichen. Das letzte gültige Zeichen ist die Tilde (~) beim Wert 126. Das 128-te Zeichen (DEL) ist kein gültiges Zeichen.
Das ist jetzt die einzige Stelle wo wir ein bisschen Hirnschmalz brauchen. Wir müssen dafür sorgen, dass unser Zufallswert im Bereich von 33 bis (einschließlich) 126 liegt.
Das geht so:
int x = 33 + generiereZufallszahl(93); // 126 - 33 = 93
Wenn wir jetzt also das hier tun:
C:
int x = 33 + generiereZufallszahl(93);
char c = toChar(x);
// c ist zufälliges ASCII-Zeichen, das zu unserem Passwort konform ist
Ergibt das ein einzelnes Zeichen, das wir für unser Passwort benutzen können.
Räumen wir das ganze noch etwas auf:
char c = toChar(33 + generiereZufallszahl(93));
Sooo. Jetzt können wir daran gehen 8 Stück davon zu erzeugen und zu verknüpfen. Hier der triviale Ansatz:
C:
toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93)) + toChar(33 + generiereZufallszahl(93));
Das ist natürlich super unaufgeräumt und unübersichtlich. Aber ich bin mir sicher ihr habt schonmal was von Schleifen gehört:
C:
char password[9];
WIEDERHOLE 8 MAL {
char c = toChar(33 + generiereZufallszahl(93));
password = password + c;
}
print(password);
Tada, unser Pseudocode. Bei Fragen bitte melden.
Und lass mich dir noch eines sagen: Du wirst dieses Studium/Ausbildung nicht bestehen, wenn du nicht hin und wieder bereit bist, dich auch mal hinter ein Problem zu klemmen und eigene Ideen zu entwerfen. Deshalb hoffe ich wirklich, dass du in Zukunft selbst versuchst solche Lösungen herzuleiten, gerne auch mit Hilfe aus dem Forum. Aber denk daran: In der Klausur sind wir nicht da, da musst du ran!
Gruß Technipion