2010-07-07 4 views
0

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

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 

ответ

0

Предложение 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

Спасибо, второе предложение мне понравилось, как и в первом 4.25, также является целым числом. –

0

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

Dim k As Integer 
k = 23 \ 5 ' sets k to 4. 
+0

Не exactly.I не хотел, чтобы ответ когда-либо десятичная. Если бы дивизоры были такими, что ответ в десятичных разрядах. –

Смежные вопросы