2010-07-07 2 views
0

Je veux créer ce programme de division simple.Mais le problème est que les diviseurs ne doivent pas être tels que la réponse est à la décimale, comment puis-je mettre le chèque.Guidance serait appréciée. Si je comprends bien, vous ne voulez renvoyer que la partie entière (quotient) de la réponseRéponse de division simple sans décimales

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 

Répondre

0

Suggestion 1 (en évitant la coulée implicite):

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

Suggestion 2 (basé sur la réponse par @Ryan):

If (liOperand1/liOperand2) = (liOperand1 \ liOperand2) Then 
    MsgBox "result is an integer" 
Else 
    MsgBox "result is not an integer" 
End If 
+0

Merci la deuxième suggestion me convient le mieux comme dans le premier 4,25 est également un nombre entier. –

0

Pour ce faire, vous pouvez utiliser '\' au lieu de '/'.

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

Non exactly.I ne voulait pas que la réponse jamais les diviseurs sont tels que la réponse est à la décimale. –

Questions connexes