tags:

views:

39

answers:

2

I want to create this simple division program.But the problem is that the divisors should not be such that the answer is in decimal places, how do I put the check.Guidance would be appreciated.

 Option Explicit
  Dim fiCScore As Integer
  Dim fiWScore As Integer
  Dim fsUsername As String
  Dim fiMax1 As Integer
  Dim fiMax2 As Integer
  Dim liWans As Integer

  Private Sub Form_Load()

 lstCorrect.Clear
 lstWrong.Clear
 fiCScore = 0
 fiWScore = 0
 Randomize
 End Sub

 Private Sub cmdAskQuestion_Click()
 Ask_Question
 End Sub

 Public Sub Ask_Question()
 Dim liOperand1 As Integer
 Dim liOperand2 As Integer
 Dim liResult As Integer
 Dim fbAnswer As Boolean

 Dim liEqua1 As Integer
 Dim liEqua2 As Integer
 Dim lsSign As String


 ' Number Generation '
 fiMax1 = 20
 fiMax2 = 20

 liEqua1 = Int(fiMax1 * Rnd) + 1
 liEqua2 = Int(fiMax2 * Rnd) + 1
 liOperand1 = liEqua1
 liOperand2 = liEqua2

 ' Sign Option Select '
      '
 ' Division '
 If optDivide = True Then
    lsSign = " /  "
    If liEqua1 < liEqua2 Then
        liOperand1 = liEqua2
        liOperand2 = liEqua1
    End If
    '**Problem Point**
    liResult = liOperand1 / liOperand2 'liOperand1 / liOperand2 should not be such that answer (liResult) is in decimal places
 End If


 QuestionAsk:
 liWans = Val(InputBox("What is " & liOperand1 & lsSign & _
        liOperand2 & " ?"))

 End_Time

 ' If Wans_Validate = False Then                                       

              '
 ' MsgBox "Please enter numbers only.", vbCritical, "ERROR" '
 ' GoTo QuestionAsk                                                    

                        '
 ' End If                                                              

                                         '
 ' Answer Checking  Correct or Wrong                                   

         '
 If liWans = liResult Then
    MsgBox ("Correct Answer!")
    fbAnswer = True
 Else
    MsgBox ("Incorrect Answer! " _
            & liOperand1 & lsSign & liOperand2 & " = " & liResult)
 End If
A: 

If I understand correctly, you only want to return the integer portion (quotient) of the answer. To do this you can use '\' instead of '/'.

 Dim k As Integer
 k = 23 \ 5 ' sets k to 4.
Ryan
Not exactly.I did not want that the answer ever is decimal.Never the divisors be such that answer is in decimal places.
Dario Dias
A: 

Suggestion 1 (avoiding implicit casting):

 If CDbl(liResult) = CDbl(liOperand1 / liOperand2) Then
   MsgBox "result is an integer"
 Else
   MsgBox "result is not an integer"
 End If

Suggestion 2 (based on the answer by @Ryan):

 If (liOperand1 / liOperand2) = (liOperand1 \ liOperand2) Then
   MsgBox "result is an integer"
 Else
   MsgBox "result is not an integer"
 End If
onedaywhen
Thanks the second suggestion suited me the best as in the first 4.25 is also an integer.
Dario Dias