PDA

View Full Version : Esercizio in C


white05
01-09-2007, 11:48
Come fareste questo esercizio?

"Scrivere una function C di conversione di un intero positivo da base 2 a base 10 che generi un array di caratteri contenenti le cifre decimali."

il fatto che stia specificando intero positivo mi fa pensare che ci voglia un controllo giusto?

spero in qualche vostra idea...

andbin
01-09-2007, 11:57
"Scrivere una function C di conversione di un intero positivo da base 2 a base 10 che generi un array di caratteri contenenti le cifre decimali."In pratica l'equivalente di una sprintf (buf, "%d", 1234)

il fatto che stia specificando intero positivo mi fa pensare che ci voglia un controllo giusto?Magari si può anche pensare che intenda un intero unsigned.

white05
01-09-2007, 12:08
ti ringrazio ma potresti essere un pò più specifico con l'algoritmo sono un pò alle prime armi...

per quanto riguarda l'intero positivo la funzione io l'ho intesa come se in input per esempio da tastiera si dovesse inserire un numero binario da convertire in decimale...quindi come faccio a controllare che in binario sia stato inserito un intero positivo?

andbin
01-09-2007, 12:20
per quanto riguarda l'intero positivo la funzione io l'ho intesa come se in input per esempio da tastiera si dovesse inserire un numero binario da convertire in decimaleAh no, allora è diverso. Devi stabilire bene cosa hai in input e cosa ottenere in output. Per l'output il testo sopra è chiaro: ottenere un array di caratteri con la rappresentazione decimale (es. "123"). Per l'input non è chiaro (almeno a me) il testo.

...quindi come faccio a controllare che in binario sia stato inserito un intero positivo?Dipende da come lo si tratta. Un valore binario non è di per sé positivo o negativo. È più corretto dire che un valore binario ha o non ha segno.
Se su 8 bit ho un valore 10111001, lo posso interpretare come 185 (senza segno) o come -71 (con segno).

white05
01-09-2007, 18:05
grazie ancora.
Quindi supponendo che si debba immettere in input una stringa binaria...e che debba essere appunto un intero positivo (quindi immagino binario senza segno) come si potrebbe procedere?

Furla
01-09-2007, 22:05
devi convertire la stringa binaria in un valore intero per poi ricavarne la rappresentazione decimale, se ho capito bene il testo.

andbin
01-09-2007, 22:27
Quindi supponendo che si debba immettere in input una stringa binaria...e che debba essere appunto un intero positivo (quindi immagino binario senza segno) come si potrebbe procedere?Ricapitoliamo: hai una stringa in input e una in output. Devi stabilire innanzitutto un tipo di dato da usare per il valore intermedio, nel tuo caso va bene un unsigned int (così almeno non abbiamo problemi di segno).

Prima converti la stringa in un unsigned int, che successivamente converti in una stringa con la rappresentazione decimale.

Es. "110100111" ---> 423 ---> "423"

Per la prima fase scansioni la stringa, per ogni carattere (controlla ovviamente che sia '0' o '1') moltiplichi il valore intermedio per 2 e aggiungi il bit. Per la seconda fase devi fare una serie di divisioni per ottenere le singole cifre decimali.

white05
02-09-2007, 11:56
ok grazie ora ci provo seguendo le tue indicazioni :D