Perl :: Aufgabe #24

2 Lösungen Lösungen öffentlich

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:

vote_ok
von RivalofSilen (620 Punkte) - 20.03.2014 um 11:04 Uhr
Quellcode ausblenden 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;}

};
vote_ok
von TooBieee (610 Punkte) - 04.10.2017 um 08:08 Uhr
Quellcode ausblenden 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++;
}
1988257

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.