nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
No, il metodo è un altro ma prima dovresti dire se sai usare gli operatori a bit and & e or |
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Guarda ... lasciamo perdere gli operatori & e | e studia questo codice, con le funzioni e un main che convertono un numero, positivo o negativo
Codice sorgente - presumibilmente C++ |
void BinToDigits(int n, int *r) { if(n) { BinToDigits(n/10, r); *r = *r*16+n%10; } } void BinToBCD(int bin, int *bcd) { *bcd = 12; if(bin<0) { ++(*bcd); bin = -bin; } BinToDigits(bin, bcd); } int main() { int val = 12345; // Prova anche con -12345 int vbcd = 0; BinToBCD(val, &vbcd); printf("%X\n", vbcd); return 0; }
|
Tutto quello che non comprendi lo chiedi ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
perillitommaso (Normal User)
Pro
Messaggi: 186
Iscritto: 28/01/2014
|
Ma convertono il numero in BCD? Cosa è r,n e bcd? Comunque non riesco a capire molto eh.. qualche commento sulle istruzioni magari non fa male
Ultima modifica effettuata da perillitommaso il 25/02/2014 alle 15:32 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ma convertono il numero in BCD? |
Mi sembra evidente.
Il programma, a partire dal main, converte il valore
val
che ho inserito nel codice ma che tu inserirai da tastiera, in un valore bcd in
vbcd
che viene visualizzato dall'ultima printf.
r è una puntatore alla variabile usata per accumulare il risultato BCD della conversione.
n è il valore da convertire, cifra dopo cifra
bcd, come r
- il main chiama la funzione BinToBCD che accetta il valore da convertire e un puntatore ad una variabile inizialmente azzerata che conterrà il risultato
- la BinToBCD imposta il segno BCD del valore da convertire (1100 oppure 1101, ovvero 12 oppure 13) e imposta il valore assoluto del valore da convertire
- viene chiamata la funzione BinToDigits che converte e aggiunge le singole cifre del numero
- la BitToDigits è ricorsiva (chiama sé stessa); trova le singole cifre del valore (con n%10, n/10) e le aggiunge, dalla prima all'ultima, al valore BCD puntato da r
Ah, prego ...
Ultima modifica effettuata da nessuno il 25/02/2014 alle 15:47
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
perillitommaso (Normal User)
Pro
Messaggi: 186
Iscritto: 28/01/2014
|
Io non so come ringraziarti, veramente... adesso dovrei mettere tutto questo nel mio main ... ogni variabile deve essere dichiarata giusto? Tutte di tipo intero? E le funzioni non devono essere precedute dal void? Non ci dovrebbero esserci dei prototipi prima del main? Io faccio così, metto prima il prototipo, poi il main e poi la funzione
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Va bene ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
perillitommaso (Normal User)
Pro
Messaggi: 186
Iscritto: 28/01/2014
|
Solo che adesso mi accorgo che ci siamo dimenticati che nella traccia c'è scritto che dobbiamo fare la somma tra A e B e assegnare poi il risultato a C
|
|
perillitommaso (Normal User)
Pro
Messaggi: 186
Iscritto: 28/01/2014
|
E comunque l'ho provato e mi esce visualizzato solo G12345
|
|