Ответ простого деления без десятичных знаков - PullRequest
0 голосов
/ 07 июля 2010

Я хочу создать эту простую программу деления. Но проблема в том, что делители не должны быть такими, чтобы ответ был в десятичных разрядах, как мне поставить чек. Руководство будет оценено.

 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

Ответы [ 2 ]

0 голосов
/ 07 июля 2010

Предложение 1 (избегая неявного приведения):

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

Предложение 2 (на основе ответа @Ryan):

 If (liOperand1 / liOperand2) = (liOperand1 \ liOperand2) Then
   MsgBox "result is an integer"
 Else
   MsgBox "result is not an integer"
 End If
0 голосов
/ 07 июля 2010

Если я правильно понимаю, вы хотите вернуть только целую часть (частное) ответа. Для этого вы можете использовать «\» вместо «/».

 Dim k As Integer
 k = 23 \ 5 ' sets k to 4.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...