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 (피 암시 적 캐스팅) : (@Ryan로 답변에 따라)

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

제안 2 :

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

되지 않음 맞았 어은하지 않았다 대답 소수는 십진수입니다. 제수는 소수가 아닌 답이 될 수 없습니다. –