PDA

View Full Version : [C] Esplorazione elementi di un numero


cifa
30-11-2010, 17:20
Salve sono uno studente del primo anno di informatica presso la sapienza, quindi se è (e probabilmente lo è) una domanda sciocca vi prego di perdonarmi :(
Non è che sapreste dirmi come faccio a esplorare le cifre di un numero trovato con uno scanf? Per dirvi devo trovare la 4 cifra del numero N che trovo con uno scanf..

Insomma devo leggere la 4cifra di 233367 e devo capire se è maggiore o meno di 6 (dati a caso per farvi capire)

Non mi consigliate robe complesse perchè non le ho fatte ed ad una esercitazione il mio prof penso si stranirebbe, fino ad ora ho fatto cenni di array, iterazioni e le altre basi.


EDIT: Ho sbagliato il titolo :(

Supdario
30-11-2010, 18:25
Usi la funzione sprintf (o itoa, ma è consigliabile la prima perché quest'ultima è deprecata) per convertire il numero in stringa, dopodiché lo confronti. :D

char str[256];
sprintf(str, "%d", numero);

Successivamente il numero "numero" sarà messo nella stringa "str".

Se vuoi fare un confronto hai due modi:

if (str[3] > '6')
if (atoi(str[3]) > 6)

Nel primo caso, dato che si tratta di una stringa (cioè dei caratteri), non puoi confrontare direttamente il numero 6, ma puoi confrontare il carattere che rappresenta il numero 6.
Nel secondo caso, il carattere '3' viene convertito in un intero (3) e puoi tranquillamente fare dei confronti numerici.

cdere
30-11-2010, 21:35
numero/(10^(cifra_da_estrarre-1))%10

Supdario
30-11-2010, 21:53
E' un ottimo esempio, anche se c'è da precisare che bisogna castare l'intero in un floating point e poi arrotondare il risultato. Tradotto in C sarebbe così:

int numero = 233367;
int posizione = 4;
int cifra = (int)fmod((double)numero/pow(10, (double)posizione-1),10);


P.S.: La cifra viene estratta a partire da destra.