Perl :: Aufgabe #24
2 Lösungen
Zahlen erraten lassen.
Anfänger - Perl
von zayc_
- 28.12.2012 um 14:08 Uhr
Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) in einem vom User angegebenen Bereich Erraten soll.
Konsolenausgabe:
Bitte Untergränze angeben: 0
Bitte Obergränze angeben: 100
Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob
R die Zahl richtig ist
G die gesuchte Zahl grösser ist
K die gesuchte Zahl kleiner ist
1. Versuch: 50.
k
2. Versuch: 25
g
3. Versuch: 37
g
4. versuch: 42
g
5. Versuch: 46
k
6. Versuch: 44
k
7. Versuch: 43
r
Die gesuchte Zahl war also die 43!
Lösungen:
Perl-Code
print "Bitte Zahl ausdenken!\nMindestwert\n"; $min=<STDIN>; print "\nMaxwert:\n"; $max=<STDIN>; print "\n\n"; $geloest = 0; while($geloest eq 0){ erzeugen(); print "$zahl\n"; chop($loesung = <STDIN>); print "\n"; if($loesung eq 'g'){ $min = $zahl + 1; } elsif($loesung eq 'k'){ $max = $zahl - 1; } elsif($loesung eq 'r'){ $geloest = 1; } else{print "\n\n############################\nfalsche Eingabe!\n############################\n\n";} } sub erzeugen{ NOCHMAL: $temp = int(rand($max) + $min ); if($temp <= $max && $temp >= $min){ $zahl = $temp; } else {goto NOCHMAL;} };
Perl-Code
use strict; use warnings; use feature qw(say); my ($min,$max,$zahl,$userInput); my $count = 1; my $treffer = 0; say "Bitte Untergrenze angeben:"; chomp($min = <STDIN>); if ($min !~ /\d+/) { say "Bitte nur Zahlen. Untergrenze erneut eingeben:"; chomp($min = <STDIN>); } say "Bitte Obergrenze angeben:"; chomp($max = <STDIN>); if ($max !~ /\d+/) { say "Bitte nur Zahlen. \nObergrenze erneut eingeben:"; chomp($max = <STDIN>); } elsif ($max <= $min) { say "Obergrenze muss höher sein als Untergrenze. \nObergrenze erneut eingeben:"; chomp($max = <STDIN>); } say "Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob\n R die Zahl richtig ist\n G die gesuchte Zahl grösser ist\n K die gesuchte Zahl kleiner ist"; while($treffer == 0) { $zahl = int rand($max-$min) + $min; say "$count. Versuch: $zahl"; chomp ($userInput = <STDIN>); if ($userInput !~ /[rgk]/i) { say "Bitte nur R , G oder K eingeben:"; chomp ($userInput = <STDIN>); } elsif ($userInput =~ /g/i) { $min = $zahl; } elsif ($userInput =~ /k/i) { $max = $zahl; } elsif ($userInput =~ /[r]/i){ say "Die gesuchte Zahl war also die $zahl"; $treffer = 1; } $count++; }