# 手順 7: 乗算問題と除算問題の追加Step 7: Add multiplication and division problems

このチュートリアルの第 7 部では、乗算問題と除算問題を追加しますが、まず変更方法について考えてみます。In the seventh part of this tutorial, you'll add multiplication and division problems, but first think about how to make that change. 最初の手順は、値を格納することです。Consider the initial step, which involves storing values.

## 乗算問題と除算問題を追加するにはTo add multiplication and division problems

1. さらに 4 つの整数変数をフォームに追加します。Add four more integer variables to the form.

``````Public Class Form1

' Create a Random object called randomizer
' to generate random numbers.
Private randomizer As New Random

' These integer variables store the numbers
' for the addition problem.
Private addend1 As Integer
Private addend2 As Integer

' These integer variables store the numbers
' for the subtraction problem.
Private minuend As Integer
Private subtrahend As Integer

' These integer variables store the numbers
' for the multiplication problem.
Private multiplicand As Integer
Private multiplier As Integer

' These integer variables store the numbers
' for the division problem.
Private dividend As Integer
Private divisor As Integer

' This integer variable keeps track of the
' remaining time.
Private timeLeft As Integer
``````
``````public partial class Form1 : Form
{
// Create a Random object called randomizer
// to generate random numbers.
Random randomizer = new Random();

// These integer variables store the numbers
// for the addition problem.

// These integer variables store the numbers
// for the subtraction problem.
int minuend;
int subtrahend;

// These integer variables store the numbers
// for the multiplication problem.
int multiplicand;
int multiplier;

// These integer variables store the numbers
// for the division problem.
int dividend;
int divisor;

// This integer variable keeps track of the
// remaining time.
int timeLeft;
``````
2. 以前に実行したように、`StartTheQuiz()` メソッドを変更して、乗算問題と除算問題に乱数を入力するようにします。As you did before, modify the `StartTheQuiz()` method to fill in random numbers for the multiplication and division problems.

``````''' <summary>
''' Start the quiz by filling in all of the problem
''' values and starting the timer.
''' </summary>
''' <remarks></remarks>
Public Sub StartTheQuiz()

' Fill in the addition problem.
' Generate two random numbers to add.
' Store the values in the variables 'addend1' and 'addend2'.

' Convert the two randomly generated numbers
' into strings so that they can be displayed
' in the label controls.

' 'sum' is the name of the NumericUpDown control.
' This step makes sure its value is zero before
' adding any values to it.
sum.Value = 0

' Fill in the subtraction problem.
minuend = randomizer.Next(1, 101)
subtrahend = randomizer.Next(1, minuend)
minusLeftLabel.Text = minuend.ToString()
minusRightLabel.Text = subtrahend.ToString()
difference.Value = 0

' Fill in the multiplication problem.
multiplicand = randomizer.Next(2, 11)
multiplier = randomizer.Next(2, 11)
timesLeftLabel.Text = multiplicand.ToString()
timesRightLabel.Text = multiplier.ToString()
product.Value = 0

' Fill in the division problem.
divisor = randomizer.Next(2, 11)
Dim temporaryQuotient As Integer = randomizer.Next(2, 11)
dividend = divisor * temporaryQuotient
dividedLeftLabel.Text = dividend.ToString()
dividedRightLabel.Text = divisor.ToString()
quotient.Value = 0

' Start the timer.
timeLeft = 30
timeLabel.Text = "30 seconds"
Timer1.Start()

End Sub
``````
``````/// <summary>
/// Start the quiz by filling in all of the problem
/// values and starting the timer.
/// </summary>
public void StartTheQuiz()
{
// Fill in the addition problem.
// Generate two random numbers to add.
// Store the values in the variables 'addend1' and 'addend2'.

// Convert the two randomly generated numbers
// into strings so that they can be displayed
// in the label controls.

// 'sum' is the name of the NumericUpDown control.
// This step makes sure its value is zero before
// adding any values to it.
sum.Value = 0;

// Fill in the subtraction problem.
minuend = randomizer.Next(1, 101);
subtrahend = randomizer.Next(1, minuend);
minusLeftLabel.Text = minuend.ToString();
minusRightLabel.Text = subtrahend.ToString();
difference.Value = 0;

// Fill in the multiplication problem.
multiplicand = randomizer.Next(2, 11);
multiplier = randomizer.Next(2, 11);
timesLeftLabel.Text = multiplicand.ToString();
timesRightLabel.Text = multiplier.ToString();
product.Value = 0;

// Fill in the division problem.
divisor = randomizer.Next(2, 11);
int temporaryQuotient = randomizer.Next(2, 11);
dividend = divisor * temporaryQuotient;
dividedLeftLabel.Text = dividend.ToString();
dividedRightLabel.Text = divisor.ToString();
quotient.Value = 0;

// Start the timer.
timeLeft = 30;
timeLabel.Text = "30 seconds";
timer1.Start();
}
``````
3. 乗算問題と除算問題についても確認するように `CheckTheAnswer()` メソッドを変更します。Modify the `CheckTheAnswer()` method so that it also checks the multiplication and division problems.

``````''' <summary>
''' Check the answers to see if the user got everything right.
''' </summary>
''' <returns>True if the answer's correct, false otherwise.</returns>
''' <remarks></remarks>
Public Function CheckTheAnswer() As Boolean

If addend1 + addend2 = sum.Value AndAlso
minuend - subtrahend = difference.Value AndAlso
multiplicand * multiplier = product.Value AndAlso
dividend / divisor = quotient.Value Then

Return True
Else
Return False
End If

End Function
``````
``````/// <summary>
/// Check the answers to see if the user got everything right.
/// </summary>
/// <returns>True if the answer's correct, false otherwise.</returns>
{
&& (minuend - subtrahend == difference.Value)
&& (multiplicand * multiplier == product.Value)
&& (dividend / divisor == quotient.Value))
return true;
else
return false;
}
``````

乗算記号 (×) と除算記号 (÷) はキーボードから簡単に入力できないため、Visual C# および Visual Basic では、乗算にはアスタリスク (*)、除算にはスラッシュ記号 (/) を使用します。You can't easily enter the multiplication sign (×) and the division sign (÷) using the keyboard, so Visual C# and Visual Basic accept an asterisk (*) for multiplication and a slash mark (/) for division.

4. タイマーの Tick イベント ハンドラーの最後の部分を、残り時間がなくなったら正しい解答を表示するように変更します。Change the last part of the timer's Tick event handler so that it fills in the correct answer when time runs out.

``````Else
' If the user ran out of time, stop the timer, show
' a MessageBox, and fill in the answers.
Timer1.Stop()
timeLabel.Text = "Time's up!"
MessageBox.Show("You didn't finish in time.", "Sorry!")
difference.Value = minuend - subtrahend
product.Value = multiplicand * multiplier
quotient.Value = dividend / divisor
startButton.Enabled = True
End If
``````
``````else
{
// If the user ran out of time, stop the timer, show
// a MessageBox, and fill in the answers.
timer1.Stop();
timeLabel.Text = "Time's up!";
MessageBox.Show("You didn't finish in time.", "Sorry");
difference.Value = minuend - subtrahend;
product.Value = multiplicand * multiplier;
quotient.Value = dividend / divisor;
startButton.Enabled = true;
}
``````
5. プログラムを保存し、実行します。Save and run your program.

次の図に示すように、クイズの受け手はクイズを完了するためには 4 つの問題に答える必要があります。Quiz takers must answer four problems to complete the quiz, as the following illustration shows.

4 つの問題がある計算クイズMath quiz with four problems