Passwortsperre (Schleifen)
Wer kennt es nicht. Bei Mobiltelephonen, Webseiten und sogar am Bankomaten müssen Passwörter eingegeben werden. Damit nicht ein Unbefugter alle möglichen Passwörter ausprobiert, wird (meist) nach dem dritten falschen Eingabeversuch das Konto gesperrt.
Das Passwort sei im Folgenden fest vorgegeben: "098765".
Schreiben Sie ein Programm, das den Anwender nach dem Passwort fragt. Sobald es richtig eingegeben wurde, gilt die Person als berechtigt und das Wort "BERECHTIGT" soll ausgegeben werden. Nach jeder fehlerhaften Eingabe soll jedoch ausgegeben werden dass das Passwort falsch war und wie viele Versuche noch bleiben.
Nach der dritten falschen Eingabe erscheint dann "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!"
0 Kommentare
40 Lösung(en)
- java
- cpp
- cpp
- python
- vb
- perl
- python
- ruby
- python
- pascal
- java
- python
- c
- vb
- ruby
- lisp
- perl
- java
- python
- python
- javascript
- cpp
- csharp
- java
- csharp
- c
- java
- java
- php
- python
- python
- javascript
- abap
- vb
- c
- c
- csharp
- cpp
- cpp
- cpp
package ch.programmieraufgaben.iteration.passwortsperre;
import java.util.Scanner;
/**
* Passwortsperre nach dem 3. fehlgeschlagenen Passwortversuch
* @author Philipp Gressly (phi@gress.ly)
*/
/*
* History: first Implementation: Jan 22, 2013
* Bugs : none known.
*/
public class PasswortsperreHash {
public static void main(String[] args) {
new PasswortsperreHash().top();
}
// In der Praxis werden Passwörter nie auf dem Server abgelegt.
// Anstelle ist besser eine Einwegverschlüsselung (Hash) wie
// z. B. MD5, SHA oder Quersumme zu verwenden.
int passwort = "098765".hashCode();
int MAX_VERSUCHE = 3;
void top() {
int versuche = 0; // bereits getätigte Passworteingaben
boolean eingeloggt = false;
while(versuche < MAX_VERSUCHE & (! eingeloggt)) {
String versuch = einlesen("Passwort (" + (versuche + 1) + ". Versuch)");
versuche = versuche + 1;
if(passwort == versuch.hashCode()) {
eingeloggt = true;
} else {
int verbleibendeVersuche = MAX_VERSUCHE - versuche;
System.out.print("Passwort falsch. Noch " + verbleibendeVersuche + " Versuch");
// Mehrzahl im Text
if(1 != verbleibendeVersuche) {
System.out.print("e");
}
System.out.println(".");
}
}
if(eingeloggt) {
System.out.println("BERECHTIGT");
} else {
System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
}
} // end method top()
// Hilfsfunktion zur Texteingabe
Scanner sc = new Scanner(System.in);
String einlesen(String wert) {
System.out.println("Bitte " + wert + " eingeben: ");
return sc.nextLine();
} // end method einlesen()
} // end of class PasswortsperreHash
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
#include <iostream>
#include <conio.h>
using namespace std;
class Bankkonto
{
private:
int passwort[6];
double guthaben;
int anzahlVersuche;
bool berechtigt;
public:
int kontoNummer[10];
Bankkonto()
{
}
void init()
{
anzahlVersuche = 3;
guthaben = 0;
berechtigt = false;
//Benutzer kann Kontonummer und PIN selbst wählen
char eingabe;
cout <<"Neues Bankkonto" <<endl
<<"===============" <<endl
<<"Bitte 10 Stellige Kontonummer eingeben: ";
for(int i = 0; i < 10; i++)
{
eingabe = getche();
if( (int)eingabe-48 >= 0 && (int)eingabe-48 < 10 )
kontoNummer[i] = (int)eingabe-48;
else kontoNummer[i] = 0;
}
cout <<endl <<"Bitte 6 stellige Pin eingeben: ";
for(int i = 0; i < 6; i++)
{
eingabe = getch(); cout <<"*";
if( (int)eingabe-48 >= 0 && (int)eingabe-48 < 10)
passwort[i] = (int)eingabe-48;
else passwort[i] = 0;
}
cout <<endl <<endl;
cout <<"Konto erstellt!" <<endl <<endl;
getch();
}
void ausgabe()
{
if(!berechtigt)
{
cout <<"Sie sind nicht berechtigt \x81 \bber dieses Konto zu verf\x81gen!" <<endl;
if(anzahlVersuche == 0) cout <<"Dieses Konto wurde gesperrt!" <<endl;
return;
}
cout <<"Kontonummer: ";
for(int i = 0; i < 10; i++)
cout <<kontoNummer[i];
cout <<endl;
cout <<"Passwort: ";
for(int i = 0; i < 6; i++)
cout <<"*";
cout <<endl;
cout <<"Guthaben: " <<guthaben <<endl;
char eingabe;
double betrag;
while(1)
{
cout <<"Was m\x94 \bchten Sie als n\x84 \bchstes tun?" <<endl;
cout <<"\t-(u) \x81 \bberweisung" <<endl
<<"\t-(g) gutschrift" <<endl
<<"\t-(a) kontostand aktualisieren" <<endl
<<"\t-(s) schliessen" <<endl
<<"Eingabe: ";
eingabe = getche();
cout <<endl <<endl;
if(eingabe == 'u')
{
cout <<"Betrag der \x81 \bberwiesen werden soll: ";
cin >> betrag; cout <<endl <<"Danke." <<endl;
getch();
system("CLS");
ueberweisung(betrag);
}
else if(eingabe == 'g')
{
cout <<"Gutschrift eingeben: ";
cin >> betrag; cout <<endl <<"Danke." <<endl;
getch();
system("CLS");
gutschrift(betrag);
}
else if(eingabe == 'a')
{
system("CLS");
ausgabe();
break;
}
else if(eingabe == 's')
{
berechtigt = false;
return;
}
else
{
cout <<"Falsche Eingabe!" <<endl <<endl;
}
}
}
void pinEingabe()
{
if(anzahlVersuche == 0)
{
cout <<"Konto gesperrt!" <<endl;
return;
}
cout <<"Sie haben noch " <<anzahlVersuche <<" Versuche." <<endl;
char eingabe[6];
cout <<"Geben sie den PIN ein: ";
for(int i = 0; i < 6; i++)
{
eingabe[i] = (int)getch()-48; cout <<"*";
}
cout <<endl <<endl;
//Überprüfe
for(int i = 0; i < 6; i++)
{
if(eingabe[i] != passwort[i])
{
anzahlVersuche--;
berechtigt = false;
return;
}
}
system("CLS");
anzahlVersuche = 3;
berechtigt = true;
}
void ueberweisung(double betrag)
{
guthaben-=betrag;
}
void gutschrift(double betrag)
{
guthaben+=betrag;
}
};
int countRecords(char *fileName) //Zählt anzahl der Konten in der dat datei
{
int i = 0;
FILE *file;
Bankkonto b;
if(!fopen(fileName, "rb"))return 0;
file = fopen(fileName, "rb");
for(i = 0; fread(&b, sizeof(Bankkonto), 1, file) == 1; i++);
fclose(file);
return i;
}
void neuesKonto(char *name_File)
{
FILE *file = fopen(name_File, "ab");
Bankkonto neuesBK;
neuesBK.init();
fwrite(&neuesBK, sizeof(neuesBK), 1, file); //speichere
fclose(file);
}
void saveFile(char *name_File, Bankkonto b[], int anzahlKonten) //Überschreiben der Datei um änderungen zu speichern
{
FILE *file = fopen(name_File, "wb");
for(int i = 0; i < anzahlKonten; i++)
fwrite(&b[i], sizeof(b[i]), 1, file);
fclose(file);
}
void kontenAbrufen(char *name_File)
{
cout <<"KONTEN ABRUFEN" <<endl <<endl;
int anzahlKonten = countRecords(name_File);
if(anzahlKonten == 0)return;
FILE *file = fopen(name_File, "rb");
Bankkonto b[anzahlKonten];
for(int i = 0; fread(&b[i], sizeof(b[i]), 1, file) == 1; i++);
fclose(file);
int eingabe;
while(1)
{
system("CLS");
cout <<endl;
for(int i = 0; i < anzahlKonten; i++)
{
cout <<i+1 <<".Kontonummer: ";
for(int j = 0; j < 10; j++)
cout <<b[i].kontoNummer[j];
cout <<endl <<endl;
}
cout <<"W\x84hlen sie eine Kontonummer aus!" <<endl
<<"(nummer eingabe) oder 0 um zu beenden." <<endl <<endl;
scanf("%d", &eingabe); fflush(stdin);
cout <<endl <<endl;
if(eingabe == 0) break;
else if(eingabe-1 >= 0 && eingabe-1 < anzahlKonten)
{
cout <<"Kontonummer: ";
for(int j = 0; j < 10; j++)
cout <<b[eingabe-1].kontoNummer[j];
cout <<endl;
b[eingabe-1].pinEingabe();
b[eingabe-1].ausgabe();
}
else
cout <<"Falsche Eingabe!" <<endl <<endl;
getch();
}
saveFile(name_File, b, anzahlKonten); //Überschreiben der Datei, damit änderungen gespeichert werden.
}
int main()
{
system("TITLE Geldautomat");
char name_File[] = "konten.dat";//Konten werden in einer Binärdatei gespeichert
char eingabe;
int anzahlKonten;
while(1)
{
system("CLS");
cout <<"W\x84hlen Sie: " <<endl
<<"\t(n) - neues Konto hinzuf\x81gen " <<endl
<<"\t(k) - konto abrufen " <<endl
<<"\t(s) - schliessen des Programms " <<endl <<endl;
cout <<"Eingabe: "; eingabe = getche(); cout <<endl;
if(eingabe == 'n')
{
neuesKonto(name_File);
}
else if(eingabe == 'k')
{
kontenAbrufen(name_File);
}
else if(eingabe == 's')
{
return 0;
}
else
cout <<"Falsche Eingabe!" <<endl <<endl;
}
}
Lösung von: Christian :) (Hochschule Merseburg)
// Autor: Andy Großhennig
// Solution for task: Passwortsperre (Schleifen)
#include <iostream>
using namespace std;
// Function: Read attempts for the password
string getPass()
{
string sAttempt;
cout << "Bitte Passwort eingeben: ";
cin >> sAttempt;
return sAttempt;
}
// Function: Check whether the attempt is correct
void checkPass()
{
string sPassword = "098765";
string sAttempt;
int iRestAttempts = 3;
// Loop: Count attemps and comparison the attemps with the correct password
for(int i = 0;i < 3;i++)
{
sAttempt = getPass();
if(sAttempt == sPassword)
{
cout << "\nBerechtigt!";
return;
}
else
{
// If: Query whether the attemps are less two
if(i < 2)
{
iRestAttempts--;
cout << "\nPasswort falsch. Noch " << iRestAttempts << " Versuche.\n";
}
}
}
// Output if the attemps reached three
cout << "\nKonto gesperrt: Anzahl Passwortversuche ueberschritten!";
}
int main()
{
checkPass();
cout << "\n\n";
system("Pause");
return 0;
}
Lösung von: Andy Großhennig (Bundeswehr)
def passwort(code):
versuch = 3
eintritt = False
while versuch >-1 and eintritt ==False:
eingabe = input("Bitte Passwort eingeben: ")
if eingabe == code:
print ("BERECHTIGT")
eintritt = True
else:
print("Falsches Passwort. Sie haben noch ", versuch, " Versuche")
versuch -=1
print("Das wars")
passwort("098765")
Lösung von: Py Thon ()
'von Patrick Prem
Public Class Form1
Dim Versuche As Integer
Private Sub cmdpasswort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdpasswort.Click
Dim Passwort As String = "098765" 'Gespeichertes Passwort
Dim Passworteingabe As String 'Neues Passwort
Dim i As Integer 'Lauf variable
Dim richtig As Boolean = True
Passworteingabe = InputBox("Bitte Passwort eingeben", "Passwort eingabe") 'Passwort einlese
If Passwort.Length = Passworteingabe.Length Then 'Abfrage ob das Passwort stimmt
For i = 0 To Passworteingabe.Length - 1
If Not Passwort.Chars(i) = Passworteingabe.Chars(i) Then
richtig = False
End If
Next
Else : richtig = False
End If
If richtig = True Then 'Auswertung der Abfrage
MsgBox("Korrekt")
Versuche = 0
lbversuche.Text = Versuche
ElseIf Versuche >= 3 Then 'Versuchszähler
MsgBox("gesperrt")
Else
MsgBox("Falsche eingabe")
Versuche = Versuche + 1
lbversuche.Text = Versuche
End If
End Sub
End Class
Lösung von: Patrick Prem (Htl Jenbach)
$in, $ct = 3, $pw = '098765';
print "Tresor.\n**********************************\nBitte geben sie das Passwort ein: ";
while(){
chomp($in=<STDIN>);
if($in eq $pw){
print "BERECHTIGT\n\n";
last;
}else{
$ct--;
print "Ungültige Eingabe! Sie haben noch $ct Versuche: ";
}
if($ct==0){
print "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n";
last;
}
}
Lösung von: Name nicht veröffentlicht
def passworttest(geheim):
geheim = geheim
i = 0
while True:
eingabe = int(input("Bitte die Zahl eingeben"))
if i == 2 :
print(" Der Code wurde 3 mal falsch eingegeben")
break
elif eingabe != geheim:
i +=1
else:
print(" War der richtig Code")
break
Lösung von: serimet hokart (wasweißich)
#!/usr/bin/env ruby
ja = 9876543210
Versuche = 3
while Versuche > 0 do
puts "Bitte geben Sie ihr Paswort ein!"
vlt = gets.to_f
if vlt == ja
Versuche = 0
puts "\e[2J\e[f"
else
Versuche = Versuche - 1
print "\e[2J\e[s"
puts "FALSCH Bitte noch einmal versuchen"
puts "Verbleibende Versuche:" + Versuche.to_s
end
end
if vlt == ja
puts "Entsperrt!"
else
puts "Gesperrt"
end
gets
Lösung von: Name nicht veröffentlicht
# -*- coding:utf-8 -*-
for i in range(2, -1, -1):
r = raw_input('Password:')
if r == '098765':
print 'BERECHTIGT'
break
if i == 0:
print 'KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!'
break
print 'Wrong Password. {0} attempts left.'.format(i)
Lösung von: Name nicht veröffentlicht
program Passwortsperre (input, output);
{ gibt eine "Gesperrt"-Meldung nach X falschen Passworteingaben aus. }
const
PASSWORD = '098765';
VERSUCHE = 3;
type
tIndex = 0..VERSUCHE;
var
i: tIndex;
Passwort: string[32];
PwRichtig: boolean;
begin
{ var initialisieren }
PwRichtig := false;
i := 0;
{ PW einlesen }
repeat
write('Bitte Passwort eingeben');
if i > 0 then
write(' (Noch ', VERSUCHE - (i), ' Versuch(e))');
write(': ');
readln(Passwort);
if PASSWORD = Passwort then
PwRichtig := true;
i := i + 1
until (PwRichtig) or (i >= VERSUCHE);
{ Ergebnis ausgeben }
writeln;
if PwRichtig then
writeln('BERECHTIGT')
else
writeln('KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!')
end. { Passwortsperre }
Lösung von: Patrick Reif ()
import java.util.Scanner;
public class passcheck {
private String pass = "098765";
// Scanner zum einlesen der Usereingabe
private Scanner scan = new Scanner(System.in);
/*
* Stimmt das Passwort wird der boolean zu true und wird in der Hauptmethode
* geprüft
*/
private boolean richtigespass = false;
// Anzahl an Eingabeversuchen
static int zaehler = 3;
// Gibt true aus, sollte die Eingabe dem Passwort entsprechen
private boolean checkPw(String eingabe) {
return eingabe.equals(pass);
}
// Überprüft das Passwort und fordert den User zur Eingabe auf
private boolean eingabeAufforderung() {
System.out.println("Geben Sie das Passwort an: ");
// Überprüft das Passwort
if (checkPw(scan.next())) {
System.out.println(System.getProperty("line.separator")
+ "BERECHTIGT");
richtigespass = true;
}
// Trifft zu wenn die Eingabe nicht mit dem Passwort überein stimmt
else {
zaehler--; // Versuche werden reduziert
// Wenn Versuche aufgebraucht sind wird Meldung ausgegeben
if (zaehler == 0) {
System.out.println(System.getProperty("line.separator")
+ "KONTO GESPERRT!"
+ System.getProperty("line.separator")
+ "ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!"
+ System.getProperty("line.separator"));
}
// Wenn noch 1+ Versuche vorhanden sind wird ausgegeben wie viele
else {
System.out.println(System.getProperty("line.separator")
+ "Falsches Passwort!"
+ System.getProperty("line.separator")
+ "Sie haben noch " + zaehler + " Versuch/e"
+ System.getProperty("line.separator"));
}
}
return richtigespass; /*
* ist true wenn das Passwort mit der Eingabe
* übereinstimmt
*/
}
// Hauptmethode
public static void main(String[] args) {
// Klassenvariable um auf die private Variablen zugreifen zu können
passcheck tue = new passcheck();
/*
* Läuft so lange bis die Versuche ausgehen oder bis die Eingabe mit dem
* Passwort übereinstimmt
*/
while (true) {
// Trifft zu wenn die Eingabe mit dem Passwort übereinstimmt
if (tue.eingabeAufforderung()) {// ruft Methode zur Überprüfung auf
break;
}
// Wenn keine Versuche mehr übrig sind
if (zaehler == 0) {
break;
}
}
}
}
Lösung von: Sebastian Littel ()
Richtiges_Passwort='098765'
def passwortsperre():
versuche = 3
print('Sie haben %s Versuche' % versuche)
while versuche > 0:
code = input('Bitte bestätigen Sie die Pinnnummer!')
if code == Richtiges_Passwort:
print('BERECHTIGT')
versuche = 0
print(input())
else:
versuche = versuche - 1
print('Falsch, Sie haben noch %s Versuche' % versuche)
if versuche == 0:
print('KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!')
print(input())
passwortsperre()
Lösung von: Arnim Pankratz (Freiherr-vom-Stein-Gymnasium Betzdorf)
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Deklarationen
int iPasswort = 198765;
int iZähler = 4;
int iEingabe;
do {
// Benutzer auffordern Passwort einzugeben
printf("\nBitte geben sie das Passwort ein: ");
scanf_s("%i", &iEingabe);
fflush(stdin);
// Passwort prüfen
if(iEingabe == iPasswort) {
printf("\n\nBerechtigt!");
} else {
iZähler -= 1;
if(iZähler > 0) {
printf("\nPasswort Falsch!\nSie haben noch %i Versuche!", iZähler);
}
}
// Fehlerausgabe
if(iZähler <= 0) {
printf("\nKonto Gesperrt: Zu viele Fehlgeschlagene Versuche!");
getchar();
return 0;
}
} while(iEingabe != iPasswort);
getchar();
return 0;
}
Lösung von: Elias Zech (Optics Balzers)
Module Module1
Sub Main()
Dim Passwort As String = "098765"
Dim Versuch As String
Dim Zähler As Integer = 2
Dim FalschZähler As Integer = 1
Console.WriteLine("Bitte geben sie das passwort ein:")
While Zähler >= 0
Console.Write("Pw: ")
Versuch = Console.ReadLine()
If Versuch = Passwort Then
Console.Clear()
Console.WriteLine("BERECHTIGT")
Console.ReadLine()
Exit Sub
Else
Console.Clear()
Console.WriteLine("Falsches Passwort, noch " & Zähler & " Versuche übrig")
If Zähler = 0 Then
Console.Clear()
Console.WriteLine("KONTO GESPERRT: ANZAHL PASSWORT VERSUCHE ÜBERSCHRITTEN " & "(" & FalschZähler & ")")
Console.ReadLine()
Exit Sub
End If
FalschZähler += 1
End If
Zähler -= 1
End While
End Sub
End Module
Lösung von: Elias Zech (Optics Balzers)
puts "Bitte Password eingeben:"
(1..3).each do |i|
if gets.chomp == "098765"
puts "BERECHTIGT"
break
else
if i == 3
puts "KONTO GESPERRT: ANZAHL DER VERSUCHE ÜBERSCHRITTEN!"
else
puts "Falsches Password!#{3-i} Versuche verbleibend"
end
end
end
Lösung von: Name nicht veröffentlicht
//F#
open System
let pincode = "098765"
let maxVersuch = 3
let checkPass =
pincode.Equals(Console.ReadLine())
let startPruefung =
let rec pruefung versuch =
if versuch < maxVersuch then
match checkPass with
| true -> printfn "BERECHTIGT"
| false -> printfn "KONTO GESPERRT: ANZAHL (%d) PASSWORTVERSUCHE ÜBERSCHRITTEN!" maxVersuch
else
pruefung (versuch + 1)
pruefung 1
startPruefung
Lösung von: Vural Acar ()
use strict;
use warnings;
use diagnostics;
use 5.010;
use utf8;
INIT {
my $passwd = "098765";
my $eingabe;
my $i;
for ($i = 3; $i > 0; $i--) {
print "Geben Sie das Passwort ein:\n>";
chomp($eingabe = <STDIN>);
if ($eingabe eq $passwd) {
print "BERECHTIGT!\n";
sleep(2);
last;
}
if ($i == 1) {
print "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n";
sleep(2);
last;
}
else {
print "Noch ".($i - 1)." weitere Versuche.\n";
}
}
}
Lösung von: Name nicht veröffentlicht
import java.util.Scanner;
/**
* Wer kennt es nicht. Bei Mobiltelephonen, Webseiten und sogar am Bankomaten
* müssen Passwörter eingegeben werden. Damit nicht ein Unbefugter alle
* möglichen Passwörter ausprobiert, wird (meist) nach dem dritten falschen
* Eingabeversuch das Konto gesperrt.
* Das Passwort sei im Folgenden fest vorgegeben: "098765".
* Schreiben Sie ein Programm, das den Anwender nach dem Passwort fragt.
* Sobald es richtig eingegeben wurde, gilt die Person als berechtigt und das
* Wort "BERECHTIGT" soll ausgegeben werden. Nach jeder fehlerhaften Eingabe
* soll jedoch ausgegeben werden dass das Passwort falsch war und wie viele
* Versuche noch bleiben. Nach der dritten falschen Eingabe erscheint dann
* "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!"
*
* @author RagingRobert
*/
public class Password {
private final String password = "098765";
private static int counter = 0;
public static void main(String[] args) {
Password instance = new Password();
Scanner sc = new Scanner(System.in);
while(counter < 3) {
System.out.println("Bitte geben Sie das Password ein: ");
String eingabe = sc.next();
if (!instance.checkPassword(eingabe)) {
instance.ausgabeFehler();
} else {
System.out.println("BERECHTIGT");
break;
}
}}
private void ausgabeFehler() {
counter++;
if (counter == 3) {
System.out.println("KONTO GESPERRT: ANZAHL PASSWORDVERSUCHE"
+ "ÜBERSCHRITTEN!");
} else {
System.err.println
("Falsches Passwort! Es bleiben noch " + (3 - counter));
}
}
private boolean checkPassword(String password) {
if (password.length() != this.password.length()) {
return false;
}
for (int i = 0; i < password.length(); i++) {
if (password.charAt(i) != this.password.charAt(i)) {
return false;
}
}
return true;
}
}
Lösung von: Robert König (Universität Passau)
# Python 3.4.2
zaehler = 3
while zaehler:
passwort = input('Bitte geben Sie Ihr Passwort ein: ')
if passwort != '098765':
print('Falsches Passwort - noch', zaehler - 1, 'Versuche.')
else:
print('BERECHTIGT.')
break
zaehler -= 1
Lösung von: Hilli Hilli ()
"""author= Cromewell"""
def Passwortsperre():
versuche= 3
passwort= "098765"
while versuche >0:
eingabe= input("PASSWORT: ")
if eingabe== passwort:
print("BERECHTIGT")
break
elif eingabe != passwort:
versuche -= 1
print("NOCH", versuche, "VERSUCH/E")
if versuche == 0:
print("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")
Passwortsperre()
Lösung von: Name nicht veröffentlicht
function input(trials) {
if (prompt("Geben Sie Ihr Passwort ein:") == "098765")
console.log("BERECHTIGT");
else {
trials--;
if (trials == 0)
console.log("Konto gesperrt: Anzahl Passwortversuche überschritten!");
else {
console.log("Verbleibende Versuche:" + trials);
input(trials);
}
}
}
input(3);
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
#include <iostream>
#include <windows.h>
using namespace std;
void Wrt(string r){
cout << r << endl;
}
const int passwort = 98765;
const char versuche = 3;
string eingabe = "\0";
int main()
{
for(int i = 0; i < versuche; i++)
{
system("cls");
Wrt("Gib bitte dein Passwort ein:");
cin >> eingabe;
if(passwort == atoi(eingabe.c_str())){
system("cls");
cout << "BERECHTIGT - Du hast dafuer " << i << " Versuch(e) gebraucht!\n\n";
break;
}
else
{
cout << "Das eingegebene Passwort ist falsch! - Du hast noch " << versuche - i - 1 << " Versuche!";
Sleep(1000);
}
}
system("pause");
}
Lösung von: Name nicht veröffentlicht
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace passwortSperre
{
class Program
{
static void Main(string[] args)
{
//"098765"
string psw = "98765";
string erg = PasswortCheck(psw);
Ausgabe(erg);
Console.ReadKey();
}
private static void Ausgabe(string erg)
{
Console.WriteLine(erg);
}
private static string PasswortCheck(string psw)
{
string eingabe = " ";
string erg = " ";
for (int i = 3; i > 0; i--)
{
eingabe= Console.ReadLine();
if (eingabe == psw)
return erg = "BERECHTIGT";
else
{
Console.WriteLine("Falsche Eingabe");
Console.WriteLine("Noch {0} Versuche",i-1 );
}
}
return erg = "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!";
}
}
}
Lösung von: mattia mancina (Berufsfachschule für Informatik Bozen)
public class Passwortsperre {
private static String password = "098765";
static int fails = 0;
public static void main(String[] args) {
System.out.println("PASSWORT: ");
checkPass(password);
}
public static void checkPass(String password){
while(fails < 3){
String userPass = new java.util.Scanner(System.in).nextLine();
if(userPass.equals(password)){
System.out.println("BERECHTIGT");
}
if(userPass.equals(password) == false){
wrongPass();
}
}
}
public static void wrongPass(){
fails++;
if(fails < 3){
System.out.println("Falsches Passwort. Es bleiben noch "+(3-fails)+" Versuche.");
}
if(fails == 3){
youShallNotPass();
}
}
public static void youShallNotPass(){
System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
}
}
Lösung von: Name nicht veröffentlicht
namespace Uebung_Passwortsperre
{
class Program
{
static void Main(string[] args)
{
int versuche = 3;
int versucheuebrig;
string passwd = "asdf";
string input = "";
Console.WriteLine("Bitte geben Sie das Passwort ein:");
for (int i = 1; i <= 3;i++ )
{
input = Console.ReadLine();
if (input == passwd)
{
Console.WriteLine("BERECHTIGT");
break;
}
else
{
versucheuebrig = versuche - i;
Console.WriteLine("Falsches Passwort, sie haben noch {0} Versuche.",versucheuebrig);
}
}
if (input != passwd)
{
Console.WriteLine("\nKONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
Console.ReadKey();
}
else
{
Console.ReadKey();
}
}
}
}
Lösung von: Loris Leuenberger (BiCT AG)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char passw[]={"098765"};
char eingabe[7];
int count=3,vergl;
int i;
while(count>0)
{
//Passwort-Eingabe
printf("\nBitte geben Sie das Passwort ein: ");
fgets(eingabe, 7, stdin);
fflush(stdin);
//Vergleich des Passwort-Strings
vergl=strcmp(passw,eingabe);
if(vergl==0)
{
printf("\nBERECHTIGT\n\n");
return EXIT_SUCCESS;
}
count--;
//Fehlerausgabe
if(count==0)
{
printf("\nKONTO GESPERRT!!\n\n");
return EXIT_FAILURE;
}
printf("\nNoch %d Versuche!!",count);
}
return EXIT_SUCCESS;
}
Lösung von: Florian Hofinger (FH Salzburg AT)
/**
* 2016-02-29
* @author Sam Yiming Miao
*/
package ch.toastgott.programmieraufgaben;
import java.util.Scanner;
public class PasswordLock {
public static void main(String[] args) {
String password = "098765";
char ü = 0x00fc;
Scanner sc=new Scanner(System.in);
for (int attempts = 2; attempts >= 0; attempts--) {
System.out.println("Geben Sie das Passwort ein: ");
String input = sc.next();
if (input.equals(password)) {
System.out.println("BERECHTIGT");
break;
} else {
if (attempts == 0) {
System.out.println("KONTO GESPERRT: Anzahl der Versuche überstritten");
} else {
System.out.print("Das Passwort ist falsch und Sie haben noch ");
if (attempts == 1) {
System.out.println("1 Versuch " + ü + "brig.");
System.out.println("");
} else {
System.out.println("2 Versuche " + ü + "brig.");
System.out.println("");
}
}
}
}
}
}
Lösung von: Sam Yiming Miao (Schule ist gut genug)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
for(int i=0; i<=3; i++){
System.out.println("Bitte den PIN eingeben:");
String pw = s.next();
if(pw.equals("098765")){
System.out.println("BERECHTIGT!");
break;
}else if(i == 3){
System.out.println("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
}else{
System.out.println("Passwort falsch!\n" + (3 - i) + " Versuche verbleiben.");
}
}
}
}
Lösung von: Thomas Willberger ()
1.Datei: passwort.php
<?php
session_start()
?>
<html>
<body>
Passwort bitte hier eingeben: <br>
<form action="passwortsperre.php" method="post">
<input type="number" name="pin" /> <br>
<input type="submit" value="Bestätigen" /><input type="reset" value="Zurücksetzen" />
</form>
</body>
</html>
2. Datei: passwortsperre.php
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<?php
if (!isset($_SESSION["xx"]))
{
$x = 3;
}
else{
$x = $_SESSION["xx"];
}
$_SESSION["xx"] = $x;
if ($_POST["pin"] == "098765" && $_SESSION["xx"] > 0 )
{
echo "Bestätigt!";
}
else if ($_SESSION["xx"] <= 0)
{
echo "Konto gesperrt";
}
else
{
echo "noch " . $_SESSION["xx"] . " Versuche übrig";
$x--;
$_SESSION["xx"] = $x;
}
echo "<br>";
echo "<a href='passwort.php'>Zurück zur PIN Eingabe</a>";
?>
</body>
</html>
Lösung von: Maik Scheiermann (Powercloud GmbH)
def check_pw():
passwort = "098765"
counter = 3
while (counter > 0):
inp = input("Bitte Passwort eingeben: ")
if passwort == inp:
print("BERECHTIGT")
return
else:
counter -= 1
print("Falsches Passwort - Noch moegliche Versuche: ", counter)
print("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")
check_pw()
Lösung von: Ibrahim Hamade (Robert-Koch-Gymnasium)
Passwort = "098765"
Versuche = 3
while Versuche !=0:
Eingabe = raw_input("Bitte geben Sie das Passwort ein:")
if Eingabe == Passwort:
print("BERECHTIGT")
exit ()
else:
Versuche -=1
Versuch2 = raw_input("Passwort falsch, noch zwei Verusch:")
if Versuch2 == Passwort:
print("BERECHTIGT")
exit ()
else:
Versuche -=1
Versuch3 = raw_input("Passwort falsch, noch ein Verusch:")
if Versuch3 == Passwort:
print("BERECHTIGT")
exit ()
else:
Versuch4 = raw_input("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN")
Lösung von: La Ku ()
var x = prompt("CODE:")
if (x == "098765") {
alert("BERECHTIGT");
} else {
x = prompt("Try again, 2 more attempts");
if (x == "098765") {
alert("BERECHTIGT");
} else {
x = prompt("Try again, 1 more attempt");
if (x == "098765") {
alert("BERECHTIGT");
} else {
alert("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!");
}
}
}
Lösung von: Irene Strauß (Liceo Scientifico, Bruneck)
**************************************************************************
*Hinweis für diese Lösung wird eine Datenbanktabelle benötigt.
**************************************************************************
REPORT PASSWORT.
*************************************************************************************************
*Eingabemaske
*************************************************************************************************
SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: lv_eing TYPE string.
SELECTION-SCREEN: END OF LINE.
*************************************************************************************************
*Typisierungen
*************************************************************************************************
DATA: lt_table TYPE TABLE OF PW_TEST1,
lv_fehlv TYPE int4.
FIELD-SYMBOLS:
<fs_feld> TYPE PW_TEST1.
*************************************************************************************************
*Prüfung der Eingabe
*************************************************************************************************
AT SELECTION-SCREEN.
IF lv_eing IS INITIAL.
MESSAGE 'Bitte geben Sie das Passwort ein.' TYPE 'E'.
ENDIF.
*************************************************************************************************
INITIALIZATION.
*************************************************************************************************
*************************************************************************************************
*Prüfung des eingebenen Passworts
*************************************************************************************************
START-OF-SELECTION.
SELECT ID Fehlversuche FROM PW_Test1 INTO CORRESPONDING FIELDS OF TABLE lt_table
WHERE ID = 1.
LOOP AT lt_table ASSIGNING <fs_feld>.
lv_fehlv = <fs_feld>-Fehlversuche.
ENDLOOP.
IF lv_fehlv = 5.
WRITE:/'KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!'.
ELSE.
IF lv_eing = '098765'.
WRITE:/ 'Berechtigt.'.
ELSE.
SELECT ID Fehlversuche FROM PW_Test1 INTO CORRESPONDING FIELDS OF TABLE lt_table
WHERE ID = 1.
LOOP AT lt_table ASSIGNING <fs_feld>.
lv_fehlv = <fs_feld>-Fehlversuche.
ENDLOOP.
lv_fehlv = lv_fehlv + 1.
<fs_feld>-Fehlversuche = lv_fehlv.
UPDATE PW_test1 FROM <fs_feld>.
ENDIF.
ENDIF.
Lösung von: Name nicht veröffentlicht
Private Sub Workbook_Open()
Dim passwort As String
Dim eingabe As String
Dim i As Integer
i = 3
passwort = "098765"
Do While eingabe <> passwort
If i = 0 Then
MsgBox ("KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE ÜBERSCHRITTEN!")
Exit Sub
End If
eingabe = InputBox("Bitte geben sie das Passwort ein")
If eingabe <> passwort Then
i = i - 1
MsgBox ("Das Passwort war falsch! " & "Sie haben noch " & i & " Versuche")
End If
Loop
If eingabe = passwort Then
MsgBox ("Berechtigt")
End If
End Sub
Lösung von: Ozan Gümüstas ()
#include <stdio.h>
int main()
{
char password[6] = {"09876"};
char mypwd[6];
int Versuche;
Versuche=3;
do{
printf("\nBitte geben Sie Ihre PIN ein");
fflush(stdin);
scanf("%s",&mypwd);
printf("%s",password);
if(strcmp(password,mypwd)!=0)
{Versuche--;
printf("Der Pin wurde Falsch eingegeben\n");
printf("\nSie haben noch %i Versuche",Versuche);
if(Versuche==0)
{
printf("\nIhr Konto wurde gesperrt Bitte kontaktieren sie Ihren Bankberater");
return 0 ;
}
}
else if(strcmp(password,mypwd)!=1)
{
printf("\nHerzlich Willkommen erfolgreich eingeloggt");
}
}while(strcmp(password,mypwd)!=0);
return 0 ;
//Aus irgendeinem Grund kann er 6 Ziffern nicht miteinander vergleichen.Das Programm funktioniert hiermit einwandfrei aber bei der sechsten Ziffer bekommt er das nicht hin
Lösung von: Name nicht veröffentlicht
#include <stdio.h>
int main()
{
int i;
int Modulo;
int lang;
int array[] = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
lang=sizeof(array)/sizeof(int);
for(i=0;i<=lang;i++)
{
Modulo=array[i]%3;
if(Modulo==0)
{
printf("%i ist eine Primzahl\n",array[i]);
}
else if(array[i]!=0)
{
printf("%i ist keine Primzahl\n",array[i]);
}
}
return 0;
}
Lösung von: Name nicht veröffentlicht
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Passwortsperre
{
class Program
{
static void Main(string[] args)
{
string passwort = "098765";
string vergleichswert = "0";
int count = 3;
do
{
Console.WriteLine("Gebe das Passwort ein!!!");
vergleichswert = Console.ReadLine();
if (vergleichswert == passwort)
{
Console.WriteLine("BERECHTIGT");
}
else
{
if (count == 1)
{
Console.WriteLine("!!!DAS KONTO IST GESPERRT!!!");
break;
}
else
{
count--;
Console.WriteLine($"Das Passwort war falsch, sie haben noch {count} Versuche");
}
}
} while (vergleichswert != passwort);
Console.ReadKey();
}
}
}
Lösung von: Chrischi Leif (S&N Datentechnik)
#include <iostream>
using namespace std;
int main() {
int versuche = 3;
string eingabe = "";
string password = "098765";
while(eingabe != password) {
cout << "Geben Sie ihr Passwort ein: ";
cin >> eingabe;
if (eingabe == password) {
cout << "BERECHTIGT\n"; break;
}
else if (versuche > 1) {
versuche--;
cout << "Passwort ist nicht korrekt!\nVerbleibende Versuche: " << versuche << endl;
}
else {
cout << "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n"; break;
}
}
return 0;
}
Lösung von: Name nicht veröffentlicht
#include <iostream>
using namespace std;
int main() {
int versuche = 3, var = 0;
string input = "";
string passwort = "098765";
var:cout << "Geben Sie Ihr Password ein: ";
cin >> input;
if (input == passwort) {
cout << "BERECHTIGT\n"; return 1;
} else if (versuche <= 1) {
cout << "KONTO GESPERRT: ANZAHL PASSWORTVERSUCHE UEBERSCHRITTEN!\n"; return 0;
} else {
versuche -= 1;
cout << "Passwort ist falsch!\nVersuche: " << versuche << endl;
}
goto var;
}
Lösung von: Name nicht veröffentlicht
// C++ 20 | VS-2022
#include <iostream>
#include <algorithm>
#include <vector>
struct User {
size_t id{}, pwd{};
std::string name{};
};
// einsehbare Hash-Passwortliste
const std::vector<User>users{
{1234, 5701663450940363892, "Frau Meier"},
{2345, 1950562635691139782, "Herr Mueller"}, // 098765
{4567, 1109963698518346219, "Herr Schulze"},
{1368, 1779032407870689511, "Frau Schuster"}
// ...
};
template<typename _Ty>
inline const auto check_password(const _Ty& pwd_) {
const auto find_pwd{ std::find_if(users.begin(), users.end(),
[&pwd_](const User& user) { return user.pwd == std::hash<_Ty>()(pwd_); }) };
const auto chk{ find_pwd != users.end() };
return std::make_tuple(chk, chk ? *find_pwd : User());
}
int main() {
std::string str_pwd{};
auto attempts{ 3 };
while (attempts--) {
std::cout << "Bitte Passwort eingeben: ";
std::cin >> str_pwd;
const auto [chk, user] = check_password(str_pwd); // C++ 20
if (chk) {
std::cout << "Hallo " << user.name << " (ID: " << user.id << ")." << " Sie sind berechtigt!\n";
return 0;
}
std::cout << "Falsches Passwort! Weitere Versuche: " << attempts << "\n";
}
std::cout << "\nKonto gesperrt! Anzahl Versuche ueberschritten.\n";
}
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
Testen Sie mit
a) dem richtigen Passwort bei der ersten Eingabe,
b) dem richtigen Passwort erst bei der zweiten Eingabe
c) dem richtigene Passwort erst bei der dritten Eingabe
d) drei falsche Eingaben.
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | Mittel |
Webcode: | 67qe-ch04 |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |