|
▼k さん:
こんにちは。
>Basicをつかって、2つの分数の足し算(必ず最小公倍数で通分すること)をするプログラムを作りたいんですがどうしたらいいですか?INPUT命令はなにをいれればいいんですか?
>実行例)
>分子 ?31
>分母 ?56
>分子 ?21
>分母 ?88
>でお願いします。
VBAでやるには? ということですか?
新規ブックの標準モジュールに
'========================================================
Option Explicit
Sub main()
Dim ret As Long
Dim ans(1 To 2) As Variant
Dim mes As String
Dim ques(1 To 4) As Variant
Dim g0 As Long
Dim GCD As Double
Dim 答え As Variant
For g0 = LBound(ques()) To UBound(ques())
If g0 Mod 2 Then mes = "分子を指定して" Else mes = "分母を指定して"
ques(g0) = Application.InputBox(mes, "分数の足し算", , , , , , 1)
If TypeName(ques(g0)) = "Boolean" Then
ret = 1
Exit For
End If
Next
If ret = 0 Then
ans(1) = ques(1) * ques(4) + ques(2) * ques(3)
ans(2) = ques(2) * ques(4)
GCD = get_GCD(ans(1), ans(2))
If ans(2) / GCD = 1 Then
答え = ans(1) / GCD
Else
答え = ans(1) / GCD & "/" & ans(2) / GCD
End If
MsgBox ques(1) & "/" & ques(2) & "+" & ques(3) & "/" & ques(4) & " = " & 答え
End If
End Sub
'==================================================================
Function get_GCD(ByVal n1 As Double, ByVal n2 As Double) As Long
Dim val1 As Long
Dim val2 As Long
Dim amari As Long
val1 = n1
val2 = n2
get_GCD = 1
Do While val2 <> 0
amari = val1 Mod val2
If amari = 0 Then
get_GCD = val2
End If
val1 = val2
val2 = amari
Loop
End Function
でmainを実行してみてください。
但し、分母が0の時のエラー処理はしていないので、
うまく作動するようなら、それを追加してみてください。
|
|