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

Rispondi quotando