ユーザーにランダムな数学の質問と回答を与えるプログラムを作成しようとしていますが、演算子を文字列にせずに配列に格納しようとするとエラーが発生しますが、プログラムに質問を解決させたいときに問題が発生します演算子は無視され、2 つの数値が加算されるためです。助けてください!?!
#!/usr/bin/perl
use strict;
use warnings;
sub randomNumber #generates a random number (1-100)
{
my $randomNumber = int(rand(100)) + 1;
return "$randomNumber\n";
}
sub operators #randomly chooses a operator
{
my @list = ( "+" , "-" , "/" , "*" );
my $index = rand(@list);
return $list[$index];
}
sub question{
my $firstNumber = randomNumber();
my $operater = operators();
my $secondNumber = randomNumber();
print $firstNumber.$operater.$secondNumber."\n";
print $firstNumber + $operater + $secondNumber; #this is the problem line
}
question();
ここで助けてくれてありがとう、将来の読者のための私の完成した実装です:
#!/usr/bin/perl
use strict;
use warnings;
sub randomNumber
{
my $randomNumber = int(rand(100)) + 1;
return $randomNumber;
}
sub randomOperator
{
my @operators = ( "+" , "-" , "/" , "*" );
my $index = rand(@operators);
return $operators[$index];
}
sub question{
my $firstNumber = randomNumber();
my $operator = randomOperator();
my $secondNumber = randomNumber();
print "$firstNumber $operator $secondNumber =";
my $userAnswer = <STDIN>;
my $trueAnswer = eval "$firstNumber $operator $secondNumber"; #gets answer
if ($userAnswer == $trueAnswer)
{
return 1;
}
else
{
return 0;
}
}
print question();