Differenze tra le versioni di "Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso è quello in cui si intende assegnare ciascuna cifra, da cui è composto un numero, a un elemento di una variabile vettoriale di tipo ''Byte[ ]''. Così ad esempio, s...") |
|||
Riga 12: | Riga 12: | ||
==Uso delle sole risorse di Gambas== | ==Uso delle sole risorse di Gambas== | ||
In questo caso potremo usare un codice simile al seguente: | In questo caso potremo usare un codice simile al seguente: | ||
− | + | Public Sub Main() | |
Dim bb As New Byte[4] | Dim bb As New Byte[4] | ||
Riga 18: | Riga 18: | ||
Dim i As Integer | Dim i As Integer | ||
− | + | i = 1234 | |
− | + | bb = Byte[].FromString(CStr(i)) | |
− | + | For b = 0 To bb.Max | |
− | <FONT Color=gray>' ''Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, | + | <FONT Color=gray>' ''Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48":</font> |
− | + | bb[b] = bb[b] - 48 | |
− | + | Next | |
− | |||
<FONT Color=gray>' ''Verifichiamo il risultato:</font> | <FONT Color=gray>' ''Verifichiamo il risultato:</font> | ||
− | + | For Each b In bb | |
− | + | Print b | |
− | + | Next | |
− | + | End | |
− | ==Uso della funzione esterna | + | ==Uso della funzione esterna "sprintf()" della libreria C== |
In quast'altro caso potremo usare un codice simile al seguente: | In quast'altro caso potremo usare un codice simile al seguente: | ||
Library "libc:6" | Library "libc:6" | ||
Riga 44: | Riga 43: | ||
− | + | PublicSub Main() | |
Dim bb As New Byte[4] | Dim bb As New Byte[4] | ||
Dim b As Byte | Dim b As Byte | ||
− | + | <FONT Color=#B22222>sprintf</font>(bb.Data, "%d", 1234) | |
− | + | For b = 0 To bb.Max | |
− | <FONT Color=gray>' ''Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, | + | <FONT Color=gray>' ''Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48":</font> |
− | + | bb[b] = bb[b] - 48 | |
− | + | Next | |
− | |||
<FONT Color=gray>' ''Verifichiamo il risultato:</font> | <FONT Color=gray>' ''Verifichiamo il risultato:</font> | ||
− | + | For Each b In bb | |
− | + | Print b | |
− | + | Next | |
− | + | End |
Versione delle 04:35, 10 giu 2024
Il caso è quello in cui si intende assegnare ciascuna cifra, da cui è composto un numero, a un elemento di una variabile vettoriale di tipo Byte[ ].
Così ad esempio, se il numero è "1234" e la variabile vettoriale è vett[4], vorremo assegnare:
- la cifra "1" del numero al primo elemento del vettore vett[0];
- la cifra "2" del numero al primo elemento del vettore vett[1];
- la cifra "3" del numero al primo elemento del vettore vett[2];
- la cifra "4" del numero al primo elemento del vettore vett[3].
Proponiamo due modalità: una usando le sole risorse di Gambas, l'altra la funzione esterna sprintf( ) della libreria C.
Uso delle sole risorse di Gambas
In questo caso potremo usare un codice simile al seguente:
Public Sub Main() Dim bb As New Byte[4] Dim b As Byte Dim i As Integer i = 1234 bb = Byte[].FromString(CStr(i)) For b = 0 To bb.Max ' Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48": bb[b] = bb[b] - 48 Next ' Verifichiamo il risultato: For Each b In bb Print b Next End
Uso della funzione esterna "sprintf()" della libreria C
In quast'altro caso potremo usare un codice simile al seguente:
Library "libc:6" ' int sprintf (char *__restrict __s, const char *__restrict __format, ...) ' Write formatted output to S. Private Extern sprintf(__s As Pointer, __formats As String, n As Integer) As Integer PublicSub Main() Dim bb As New Byte[4] Dim b As Byte sprintf(bb.Data, "%d", 1234) For b = 0 To bb.Max ' Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48": bb[b] = bb[b] - 48 Next ' Verifichiamo il risultato: For Each b In bb Print b Next End