facendo COSI' l'ho corretto ed ora funziona cioè mi calcola sia mcd che mcm di un tot di numeri... altro che completamente sbagliato!Provare per credere...
codice:
Public Sub Form_Load()
Dim M, n, R As Double
Dim Scambio As Double
Dim K, Contr As Integer
Dim Cont, Numeri(1 To 100), Num, Numero1, Numero2 As String
Cont = InputBox("DI QUANTI NUMERI VUOI CALCOLARE L'MCD ?", "MCD", _
vbOKOnly)
Contr = 0
Do While (Contr = 0)
If (Not (IsNumeric(Cont)) Or (Cont < 2)) Then
MsgBox ("Valore Errato....Dgitare un Numero > 1 !")
Cont = InputBox("DI QUANTI NUMERI VUOI CALCOLARE L'MCD ?", "MCD", _
vbOKOnly)
Contr = 0
Else: Contr = 1
End If
Loop
For K = 1 To Cont
Numeri(K) = InputBox("SCRIVI IL NUMERO DI INDICE " & K, "MCD", _
vbOKOnly)
Num = Numeri(K)
Contr = 0
Do While Contr = 0
If Not (IsNumeric(Num)) Then
MsgBox ("Valore Non numerico...Ridigita")
Contr = 0
Numeri(K) = InputBox("SCRIVI IL NUMERO DI INDICE " & K, "MCD", _
vbOKOnly)
Num = Numeri(K)
Else
Contr = 1
End If
Loop
Next K
Numero1 = Numeri(1)
Numero2 = Numeri(2)
MCD = MassimoComuneDivisore(Numeri(1), Numeri(2))
mcm = MinimoComuneMultiplo(Numero1, Numero2, MCD)
Debug.Print "M.C.D. ", MCD, "mcm ", mcm
For K = 3 To Cont
numerok = Numeri(K)
numerok1 = numerok
MCD = MassimoComuneDivisore(MCD, Numeri(K))
mcm1 = mcm
MCD1 = MassimoComuneDivisore(mcm, numerok)
mcm = MinimoComuneMultiplo(mcm1, numerok1, MCD1)
Debug.Print "M.C.D. ", MCD, "mcm ", mcm
Next K
End
End Sub
Public Function MassimoComuneDivisore(X, Y)
If X < Y Then
Scambio = X
X = Y
Y = Scambio
End If
R = X Mod Y
Do While (R <> 0)
X = Y
Y = R
R = X Mod Y
Loop
MassimoComuneDivisore = Y
End Function
Public Function MinimoComuneMultiplo(X, Y, Z)
MinimoComuneMultiplo = X / Z * Y
End Function