Простая проблема с Perl! просто отладка существующего кода - но я очень новый - PullRequest
0 голосов
/ 14 апреля 2019

Это домашнее задание, на котором я застрял - в основном они хотят, чтобы мы отладили программу mathq со следующим руководством:

  1. Они хотят, чтобы это обеспечивало сложение и вычитание, а также умножение и деление. Они хотят, чтобы выбор был случайным, как и раньше, но теперь проблема в том, случайное умножение, деление, сложение или вычитание. Диапазон операндов по-прежнему ограничены однозначными числами, а ответы на деление и вычитание проблемы должны быть положительными, однозначными числами.

  2. Они хотят, чтобы эта проблема деления на ноль была исправлена. Хотя ноль может быть операндом в умножение, это не может быть делителем в задаче деления.

  3. Задачи вычитания не могут иметь ноль в качестве вычитаемого числа, хотя это может быть вычитаемое. (Вычитаемое - это число, которое вычитается из наименьшего.)
    Так, 6 - 0 допускается, но не 0 - 6.

  4. Пользователь должен иметь возможность набрать 'q' или 'Q', чтобы выйти.

  5. Когда программа запускается, в дополнение к «Добро пожаловать», она должна отображать сообщение о том, как выйти.

  6. Они также решили, что пользователь будет более мотивирован, получая оценку. Каждый раз, когда пользователь отвечает на правильный вопрос, он должен получить 1 балл за ответ. Неправильный ответ 0 баллов. Когда пользователь выходит, программа должна отобразить общее количество правильных и неправильных ответов и процент правильных.

    Например: если пользователь получил 12 правильных и 6 неправильных ответов, программа отобразит что-то вроде:

Вы правильно ответили на 12 из 18 вопросов, или 67% правильно. Спасибо за игру в математику.

  1. Подсчитываются только правильные и неправильные ответы, а не недействительные.

Я очень новичок в этом, и у нас едва было какое-либо руководство - мне действительно нужна помощь с этим заданием!

#!/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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...