Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 29 Settembre 2013, 16:11:12

Titolo: Conversione di un angolo
Inserito da: vuott - 29 Settembre 2013, 16:11:12
Vi segnalo questa interessante discussione apparsa nel sito della Comunità francese dei programmatori Gambas:

http://89.234.156.109/sujet-4459-conversion-dangle-page-1.html
Titolo: Re: Conversione di un angolo
Inserito da: Top Fuel - 29 Settembre 2013, 23:23:18
Già che ci siamo facciamo pure il contrario:  ;)

Codice: [Seleziona]
' Gambas class file

Private angolodec As Float
Private angoloorario As String

Public Sub _new()
End

Public Sub Form_Open()
angolodec = CFloat(inputbox("Angolo?"))
Label1.text = convertiorario(angolodec)
End

Public Function convertiorario(angolo As Float) As String
Dim minuti As Byte, secondi As Short
Dim gradi As String
gradi = CStr(CInt(angolo)) & "°"
secondi = (angolo - CInt(angolo)) * 3600
minuti = secondi \ 60
gradi &= CStr(minuti) & "'"
secondi = secondi Mod (secondi \ 60)
gradi &= CStr(secondi) & "''"
Return gradi
End

Però ho notato una cosa, controllando con la mia calcolatrice scientifica: i risultati corrispondono solo da circa 22° in poi; sotto, la calcolatrice mi da un risultato leggermente superiore sui secondi, ma non capisco se sbaglia Gambas o la mia calcolarice. :-\
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 29 Settembre 2013, 23:32:35
Già che ci siamo facciamo pure il contrario:  ;)


Io, però, la vedrei ben inserita nella WIKI.  :-\
Titolo: Re: Conversione di un angolo
Inserito da: Top Fuel - 29 Settembre 2013, 23:34:03
Fallo tu che sei capace, magari dopo aver capito dove sta l'inghippo dei secondi.
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 29 Settembre 2013, 23:42:10
Fallo tu che sei capace, magari dopo aver capito dove sta l'inghippo dei secondi.

Ahéééééééééééé !  Stiamo freschi, allora ! 
Titolo: Re: Conversione di un angolo
Inserito da: Top Fuel - 29 Settembre 2013, 23:44:13
Per me è un bugghino di Gambas, al limite pubblicalo così com'è e ci lavorerò su in seguito.
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 30 Settembre 2013, 00:24:57
Perché un bug ?
Mi pare che il problema, di cui parli, è l'errore di divisione per zero alla riga
Codice: gambas [Seleziona]

secondi = secondi Mod (secondi \ 60)

nei casi in cui i valori a destra del punto (ossia della virgola) siano uguali a zero (ad esempio 7.0 ).
In effetti si avrebbe sostanzialmente una cosa di questo genere:
 secondi = 0 Mod 0

Si potrebbe risolvere con un IF :   :-\
Codice: gambas [Seleziona]

   If secondi > 0 Then secondi = secondi Mod (secondi \ 60)
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 30 Settembre 2013, 00:45:41
...ad ogni modo nel codice proposto dal programmatore lì nel forum francese c'è anche il calcolo inverso per passare dai gradi decimali ai gradi sessadecimali.
Titolo: Re: Conversione di un angolo
Inserito da: Top Fuel - 30 Settembre 2013, 17:31:13
Hai ragione, c'è quell'errore. :-[
Non ho fatto caso che nel codice del programmatore francese, c'era anche l'inverso, era una riga commentata. :-[
Vabbé, ho perso un quarto d'ora per niente. :D
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 30 Settembre 2013, 20:47:09

Vabbé, ho perso un quarto d'ora per niente.

E' stato comunque per te un esercizio, e quindi - secondo me - non è stato tempo sprecato.  :-\
Titolo: Re: Conversione di un angolo
Inserito da: md9327 - 02 Ottobre 2013, 15:15:37
E il mio di tempo non lo contate?  :'(

Che stò quà a leggere 'stò andirivieni di post... mannaggia...  >:(


 ;D ;D ;D
Titolo: Re: Conversione di un angolo
Inserito da: vuott - 02 Ottobre 2013, 15:52:49
Che stò quà a leggere 'stò andirivieni di post... mannaggia...


...è tutta culdura !