Это домашнее задание, на котором я застрял - в основном они хотят, чтобы мы отладили программу mathq со следующим руководством:
Они хотят, чтобы это обеспечивало сложение и вычитание, а также умножение
и деление. Они хотят, чтобы выбор был случайным, как и раньше, но теперь проблема в том,
случайное умножение, деление, сложение или вычитание. Диапазон операндов
по-прежнему ограничены однозначными числами, а ответы на деление и вычитание
проблемы должны быть положительными, однозначными числами.
Они хотят, чтобы эта проблема деления на ноль была исправлена. Хотя ноль может быть операндом в
умножение, это не может быть делителем в задаче деления.
Задачи вычитания не могут иметь ноль в качестве вычитаемого числа, хотя это может быть
вычитаемое. (Вычитаемое - это число, которое вычитается из наименьшего.)
Так, 6 - 0 допускается, но не 0 - 6.
Пользователь должен иметь возможность набрать 'q' или 'Q', чтобы выйти.
Когда программа запускается, в дополнение к «Добро пожаловать», она должна отображать
сообщение о том, как выйти.
Они также решили, что пользователь будет более мотивирован, получая оценку.
Каждый раз, когда пользователь отвечает на правильный вопрос, он должен получить 1 балл за ответ.
Неправильный ответ 0 баллов. Когда пользователь выходит, программа должна отобразить
общее количество правильных и неправильных ответов и процент правильных.
Например: если пользователь получил 12 правильных и 6 неправильных ответов, программа отобразит
что-то вроде:
Вы правильно ответили на 12 из 18 вопросов, или 67%
правильно.
Спасибо за игру в математику.
- Подсчитываются только правильные и неправильные ответы, а не недействительные.
Я очень новичок в этом, и у нас едва было какое-либо руководство - мне действительно нужна помощь с этим заданием!
#!/usr/bin/env perl
$^W = 1; # turn on warnings
use strict; # behave!
# display the startup message
print "Welcome to the mathq program.\n";
my $user_wants_to_quit = 0;
# LOOP until the user wants to quit
until ($user_wants_to_quit) {
# GENERATE A RANDOM MATH QUESTION AND SOLUTION=
# set first_num to a random integer in 0..9
my $first_num = int(rand(10));
# set second_num to a random integer in 0..9
my $second_num = int(rand(10));
my $question;
my $solution;
# pick a random integer from 0 to 1 and use it to choose operation
my $operator = int(rand(2));
if ( $operator == 1 ) {
# <<CREATE MULT QUESTION AND SOLUTION>>
$solution = $first_num * $second_num;
# swap values of first_num and solution
($solution, $first_num) = ($first_num, $solution);
$question = "$first_num / $second_num = ";
}
# <<DISPLAY QUESTION AND GET VALID RESPONSE>>=`enter code here`
my $response;
my $response_is_valid = 0; # set to FALSE
until ( $response_is_valid ) {
print "$question?\n> "; # display question
$response = <STDIN>;
chomp($response);
# <<CHECK IF RESPONSE IS VALID>>=
if ( $response =~ m/^[0-9]+$/ or $response =~ m/^[Qq]/) {
}
}
# <<CHECK CORRECTNESS OF USER'S RESPONSE>>
if ( $response =~ m/^[Qq]/ ) {
$user_wants_to_quit = 1;
}
else {
if ( $response == $solution ){
}
else {
if ( $response == $solution ){
print "Correct!\n";
} else {
print "Incorrect: $question $solution \n";
}
}
}
# display the exit message
print "Exiting the mathq program.\n";