Aiuto Visual Basic 6

antonio89x
Sapete se è possibile fare un programma con VB6 che semplifichi le frazioni?

Ad esempio 3/15 lo trasformi in 1/5

Fatemi sapere e grazie per l'aiuto.

Risposte
Sk_Anonymous
Costruisci un form con 3 textbox e 1 commandbutton.
Al "Run" nel primo textbox ci metti il numeratore,nel secondo
il denominatore,nel terzo niente.
Premi il commandbutton facendogli girare la seguente
routine:

Private Sub Command1_Click()
strnum = Text1.Text
strden = Text2.Text
num = CInt(strnum)
den = CInt(strden)
While (num <> den)
If (num > den) Then num = num - den Else den = den - num
Wend
num1 = CInt(strnum) / (num)
den1 = CInt(strden) / (num)
Text3.Text = CStr(num1) + "/" + CStr(den1)
End Sub

Se tutto va bene,nel terzo textbox dovrebbe comparire
la frazione semplificata.
Non uso il VISUALBASIC e quindi non ti garantisco nulla!
Comunque la procedura che ti ho suggerito potrebbe andar
bene per un eventuale inserimento in un programma piu' completo.
Ciao.

antonio89x
Grazie.

Proverò a farlo e poi ti faccio sapere.

antonio89x
Funziona correttamente!

Grazie mille archimede!

antonio89x
Già che ci sono potresti dirmi come fare un prog ,sempre con VB6, che trasformi i numeri decimali in frazioni?

Ci sentiamo domani, stasera nn potrò rispondere.

Thanks.

Sk_Anonymous
Come nell'altro caso prepara un form con 2 textbox e 1 commandbutton.
La procedura da inserire nel commandbutton e':

a = Len(Text1.Text) - InStr(Text1.Text, ".")
b = Text1.Text
c = CVar(b) * (10 ^ a)
b1 = CVar(c): a1 = CVar(10 ^ a): a3 = a1
While (a1 <> b1)
If (a1 > b1) Then a1 = a1 - b1 Else b1 = b1 - a1
Wend
a2 = CVar(a3) / a1: b2 = CVar(c) / a1
Text2.Text = CStr(b2) + "/" + CStr(a2)

Al momento del "Run" inserisci il numero decimale da convertire
nel text1,premendo il command si avra'nel text2 la frazione
decimale equivalente semplificata.
Ho usato il "." come separatore decimale:se invece vuoi adoperare
la "," devi solo cambiare nella prima riga della procedura il punto
con la virgola.
Per il primo programma ho notato che per numeri grandi
si puo' andare in "overflow".Conviene pertanto sostituire
CInt con CDbl o con Cvar.
Ciao.

antonio89x
Grazie mille!

Sei davvero bravo! [;)]

Se non ti annoia potresti spiegarmi il ragionamento logico fatto nei due programmi?
Se non ti va fa niente lo stesso.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.