Sempre VB6
Ho un problema: non so quali sono le istruzioni per far si che un risultato numerico se intero rimanga tale, se è decimale venga trasformato nella frazione corrispondente.
In parole povere non so "fare capire" al computer che quando il numero "è con la virgola" lo deve trasformare in frazione.
Grazie in anticipo.
In parole povere non so "fare capire" al computer che quando il numero "è con la virgola" lo deve trasformare in frazione.
Grazie in anticipo.
Risposte
Sapete come si costruisce un programma in VB che inserendo l'equazione di una retta la rappresenti??
Non ho mai provato...
Però posterò il mio programma dopo averlo fatto.
Sempre che qualcuno non lo faccia prima di me
Però posterò il mio programma dopo averlo fatto.
Sempre che qualcuno non lo faccia prima di me

ok...sono arrivata a questa conclusione...so come si può disegnare un punto in un grafico di VB...però, e ora c'è il buffo, come si disegna il piano???
"antonio89x":
Ho un problema: non so quali sono le istruzioni per far si che un risultato numerico se intero rimanga tale, se è decimale venga trasformato nella frazione corrispondente...
per quanto riguarda il tentativo di esprimere (o approssimare) un numero decimale con una frazione, allego, se può servire di esempio, una mia vecchia routinetta in Basic; nella prova eseguita approssima pigreco.
tony
il programma:
FUNCTION PBMAIN() DIM dec AS DOUBLE, num AS DOUBLE, den AS DOUBLE, answ AS STRING DIM precis AS DOUBLE, diff AS DOUBLE, bestDiff AS DOUBLE, relErr AS DOUBLE precis = 10 ^ -16 ' the desired precision dec = 4 * ATN(1) ' the number to be expressed as a fraction (this is PI) PRINT "---"; dec; "approx. = " PRINT "fraction"; TAB(23); "value"; TAB(45); "rel. error" bestDiff = 10^6 FOR den = 1 TO 10 ^ 18 num = INT(den * dec + .5) diff = num / den - dec IF ABS(diff) < bestDiff THEN bestDiff = ABS(diff): relErr = diff / dec PRINT num; "/"; den; TAB(23); num / den; TAB(45); relErr IF ABS(relErr) < precis THEN EXIT FOR END IF NEXT den LINE INPUT "press enter to exit" answ END FUNCTION
il risultato:
--- 3.14159265358979 approx. = fraction value rel. error 3 / 1 3 -4.50703414486279E-2 13 / 4 3.25 3.45071300973197E-2 16 / 5 3.2 1.85916357881302E-2 19 / 6 3.16666666666667 7.9813062486705E-3 22 / 7 3.14285714285714 4.02499434770721E-4 179 / 57 3.14035087719298 -3.95269703534519E-4 201 / 64 3.140625 -3.08013704032383E-4 223 / 71 3.14084507042254 -2.37963112882781E-4 245 / 78 3.14102564102564 -1.80485704760031E-4 267 / 85 3.14117647058824 -1.32475163857499E-4 289 / 92 3.14130434782609 -9.17705748314385E-5 311 / 99 3.14141414141414 -5.6822190314114E-5 333 / 106 3.14150943396226 -2.64896301670023E-5 355 / 113 3.14159292035398 8.49136786973483E-8 52163 / 16604 3.14159238737654 -8.47383116450023E-8 52518 / 16717 3.14159239097924 -8.35915344177218E-8 ..... omissis ...... 58466453 / 18610450 3.14159265358978 -2.82715971685646E-15 63885804 / 20335483 3.14159265358979 -1.98612111456408E-15 69305155 / 22060516 3.14159265358979 -1.27657028718897E-15 74724506 / 23785549 3.14159265358979 -6.69931938764863E-16 80143857 / 25510582 3.14159265358979 -1.45361288176262E-16 165707065 / 52746197 3.14159265358979 9.11786617667818E-17 press enter to exit
Ok, grazie a tutti per esservi cimentati.

Come si fa a far funzionare correttamente la funzione msgbox??Insomma...quando se schiaccio un bottone mi faccio apparire una finestra di avviso con due scelte, ok e annulla, se schiaccio ok mi faccio un collegamento ad un secondo form altrimenti rimango li dove sono...Ora però se io schiaccio annulla mi collega ugualmente al secondo form...Avete qualche idea???
"stellacometa2003":
Come si fa a far funzionare correttamente la funzione msgbox??Insomma...quando se schiaccio un bottone mi faccio apparire una finestra di avviso con due scelte, ok e annulla, se schiaccio ok mi faccio un collegamento ad un secondo form altrimenti rimango li dove sono...Ora però se io schiaccio annulla mi collega ugualmente al secondo form...Avete qualche idea???
TastoSchiacciato = MsgBox("Schiaccia un tasto",VbOkCancel) If TastoSchiacciato = VbOk Then Msgbox "è stato premuto OK (VbOk)" FormDaAprire.Show Else MsgBox "è stato premuto Cancel (VbCancel)" End If
TastoSchiacciato è un intero
VbOk e VbCancel sono costanti di vb e valgono rispettivamente 1 e 2
ok..piu o meno ho capito il procedimento. Grazie..cmq... mi spieghi questo fatto di VbOkCancel..non lo avevo utilizzato mai!!
VbOkCancel visualizza un messaggio in una finestra di dialogo e dopo che hai scelto un pulsante restituisce un valore che indica il pulsante scelto.
in questo caso visualizza i pulsanti OK e Annulla.
in questo caso visualizza i pulsanti OK e Annulla.
come faccio a cambiare titolo alla finestra di dialogo che appare (la scritta nello spazio blu)???
"stellacometa2003":
come faccio a cambiare titolo alla finestra di dialogo che appare (la scritta nello spazio blu)???
MsgBox "Questo è il testo del MsgBox", VbOkOnly, "Questo è il titolo"
Il msgbox chiede diversi paramentri (i parametri sono quelle voci separate da una virgola, in genere, specie a livelli di partenza, vengono utilizzati solo i primi tre)
MsgBox (TestoDaVisualizzare, TipoDiMsgBox, Titolo)
TestoDaVisualizzare è l'unico campo obbligatorio e deve essere una stringa
TipoDiMsgBox è un numero o, ancor meglio, una costante di vb che può indicare il tipo standard di MsgBox da usare (per esempio VbYesNo visualizza il tasto Yes ed il tasto No e restituisce i valori "VbYes" o "VbNo" come nell'esempio di ieri, oppure VbCritical visualizza il punto esclamativo per indicare una warning... dovresti vedere la guida con tutti i tipi)
Titolo è facoltativo ed è quello che cercavi
Come si utilizza il metodo REFRESH ad esempio per cancellare il contenuto di una textbox durante l'esecuzione schiacciando un bottone???
"stellacometa2003":
Come si utilizza il metodo REFRESH ad esempio per cancellare il contenuto di una textbox durante l'esecuzione schiacciando un bottone???
Il metodo refresh ha un solo scopo: aggiorna il form con i nuovi valori delle proprietà sue e di ogni oggetto che lo compone. Per esempio, se cambi la caption di una Label all'interno del form, cambi una proprietà. Non è detto che il cambiamento lo vedi in diretta, dipende da quanto è impegnato il pc. Se il programma ha tante istruzioni da eseguire, il pc spesso non ha il tempo (o le capacità, in base al processore, alla ram...) di aggiornare il form, quindi se interroghi la proprietà caption della Label ti restituisce il nuovo valore, ma a video vedi ancora il testo vecchio. Refresh è anche utile per i cambiamenti di immagine. Detto in parole semplici, refresh ridisegna il form. Può essere applicato anche ad ogni singolo oggetto. Di solito è meglio inserire dopo il refresh l'istruzione "DoEvents", per dare il tempo al pc di "respirare" e di ridisegnare il form con calma.
Mi potresti fare un esempiose volessi utilizzare questo metodo per non visualizzare più il vecchio testo presente in un textbox??
HEEEELP!!!!!come faccio per non visualizzare più il vecchio testo inserito in un textbox schiacciando un bottone?????

mi sa che non hai capito
Il testo della textbox VB lo modifica da solo. Refresh va aggiunto solo se il programma non ha il tempo di aggiornare il form, per esempio all'interno di un lungo ciclo for.
Nel seguente modo non ci sono problemi
In quello che segue va aggiunto refresh
Con questo programma faccio visualizzare in text1 i numeri fino a 20000. Se ometto Refresh rischio di vedere solo l'ultimo numero in quanto il pc potrebbe non avere il tempo di aggiornare lo schermo perchè il programma deve eseguire parecchie istruzioni senza un attimo di tregua.
Il problema è che Refresh rallenta parecchio il ciclo. Se per esempio devo leggere un file di 1.000.000 record e voglio far visualizzare il contatore record (solo per vedere a che punto è l'elaborazione) non posso far visualizzare tutti i numeri, ci metterebbe 10 volte tanto, quindi faccio visualizzare solo i numeri multipli di 1.000

Il testo della textbox VB lo modifica da solo. Refresh va aggiunto solo se il programma non ha il tempo di aggiornare il form, per esempio all'interno di un lungo ciclo for.
Nel seguente modo non ci sono problemi
Sub Tasto1_Click() Text1.Text = "Questo è il nuovo testo" End Sub
In quello che segue va aggiunto refresh
Dim i As Integer For i=1 To 20000 Text1.Text = i Me.Refresh DoEvents Next i
Con questo programma faccio visualizzare in text1 i numeri fino a 20000. Se ometto Refresh rischio di vedere solo l'ultimo numero in quanto il pc potrebbe non avere il tempo di aggiornare lo schermo perchè il programma deve eseguire parecchie istruzioni senza un attimo di tregua.
Il problema è che Refresh rallenta parecchio il ciclo. Se per esempio devo leggere un file di 1.000.000 record e voglio far visualizzare il contatore record (solo per vedere a che punto è l'elaborazione) non posso far visualizzare tutti i numeri, ci metterebbe 10 volte tanto, quindi faccio visualizzare solo i numeri multipli di 1.000
Si si scusa....ho risolto il problema ieri.Oggi però a scuola è nato un nuovo dubbio e come sempre il prof di info dice: perchè non lo vai a cercare??Non vi posso dare la pappa pronta"....Boh!!!Cmq, io ho provato a capire, ma come si fa ad esempio quando creo un inputbox a uscire da questo stesso schiacciando annulla??Perchè con ok fa quello che deve fare ma se voglio annullare mi segnala errore!!!
HELP VI PREGO...
HELP VI PREGO...
E' una cosa complicatuccia da spiegare, si utilizza una specie di puntatore.
In pratica
In pratica
Dim s As String s = InputBox("Scrivi qualcosa qui dentro") If StrPtr(s) = 0 Then 'Ha premuto il tasto annulla End If
cosa vuol dire StrPtr???
Spiega il passaggio se riesci...
Spiega il passaggio se riesci...
Fa un confronto con il puntatore alla stringa ottenuto tramite la funzione StrPtr. Se la stringa non e' creata, il puntatore alla stringa (meglio, alla struttura BSTR che la rappresenta) vale zero. Solo quando la stringa viene creata (anche se vuota), il puntatore diventa diverso da zero.