PDA

View Full Version : [C++] distinguere unita decine ecc


ValerioHD
24-09-2010, 18:58
Salve a tutti.. ho il seguente problema.. vorrei realizzare un programma in grado di leggere in un numero intero per esempio 125 le singole unità ovvero vorrei che il programma mi metta come risultato: i numeri contenuti in 125 sono 1 2 5
non so se rendo l'idea però ciò che mi serve è la lettura di ogni singolo numero contenuto in un intero e non la lettura completa.. altro esempio se io scrivo 234 il programma mi dovrà leggere separatamente 2 3 4 e non 234 per intero.. spero di essermi spiegato.. grazie in anticipo e scusate la confusione..

tuccio`
24-09-2010, 19:07
devi leggere l'intero e poi separarlo (reiterando la divisione con resto di 10) oppure leggere caratteri e ricavarne cifre sottraendogli il carattere '0'

tipo


char c = '7';
int n = c - '0'; // n = 7

ValerioHD
24-09-2010, 19:27
Non ho capito bene... Potresti farmi vedere il codice di un programmino semplice che ti "scompone" il numero.. per esempio se scrivo 154 lui mi scrive il numero è composto da 1 5 4.. te ne sarei grato.. grazie ancora!

DanieleC88
24-09-2010, 20:01
È matematica: i numeri vengono rappresentati con una notazione posizionale, ovvero, le cifre hanno un "peso" che dipende dalla loro posizione nella rappresentazione tipografica del numero.

Ad esempio: 123 = 1·100 + 2·10 + 3·1 = 1·10² + 2·10¹ + 3·10⁰.
Se tu prendi un numero come 123 e lo dividi per la base (tipicamente, 10) in cui è rappresentato, questo diventerà:
⎣123 / 10⎦ =
⎣(1·10² + 2·10¹ + 3·10⁰) · 10⁻¹⎦ =
⎣1·10²⁻¹ + 2·10¹⁻¹ + 3·10⁰⁻¹⎦ =
⎣1·10¹ + 2·10⁰ + 3·10⁻¹⎦.
La cifra 3·10⁻¹ diventa parte frazionaria e va quindi persa con l'arrotondamento (sono numeri interi!), ed il numero quindi diventa 12.
Il resto della divisione del numero per la base, invece, ti darà proprio questa parte andata persa, cioè 3.

In questo modo vedi subito che, se parti da un numero intero n, il resto della divisione intera tra n e 10 ti "estrapola" l'ultima cifra del numero, mentre il risultato della divisione intera tra n e 10 ti "elimina" dal numero l'ultima cifra appena estratta.
Se ripeti questo procedimento fino ad avere n = 0, avrai estratto tutte le cifre, una alla volta. Attento all'ordine, però: questo procedimento estrae le cifre "da destra a sinistra".

ciao ;)

ValerioHD
24-09-2010, 20:17
ho capito cosa intendi.. ma il problema non è numerico... ma riguarda il c++.. ovvero non so come leggere una singola lettera contenuta in una parola... per esempio mi servirebbe un programma che se io scrivo la parola "ciao" lui mi dica che la terza lettera è la "a" non so se mi spiego...

tuccio`
24-09-2010, 21:18
sul serio, ti serve un buon libro di programmazione :asd:

ValerioHD
24-09-2010, 21:29
si lo so.. :asd: comunque mi potresti fare un programma esempio?? uno semplice.. :confused:

Supdario
24-09-2010, 21:31
ho capito cosa intendi.. ma il problema non è numerico... ma riguarda il c++.. ovvero non so come leggere una singola lettera contenuta in una parola... per esempio mi servirebbe un programma che se io scrivo la parola "ciao" lui mi dica che la terza lettera è la "a" non so se mi spiego...

printf("%c",stringa[2]);

ValerioHD
24-09-2010, 21:48
printf("%c",stringa[2]);

ESATTAMENTE QUELLO CHE CERCAVO! Grazie!!

DanieleC88
24-09-2010, 22:03
Be', ipotizzando che la parola sia conservata in una stringa, allora ti basta accedervi con le parentesi quadre:

string s("ciao");
cout << "La terza lettera è: " << s[2] << endl;

L'indice che usi tra le parentesi quadre rappresenta uno scostamento dall'inizio della stringa. Se tu volessi accedere al primo carattere della stringa non dovresti scostarti di nessuna posizione, quindi l'indice sarebbe 0; per il terzo carattere l'indice sarà 2 proprio perché devi spostarti in avanti di due posizioni.

ciao :)

EDIT: LOL, ormai avevate finito la discussione senza di me e la pagina di modifica era rimasta aperta per più di un'ora... vabbe', lascio comunque il messaggio. :p

ValerioHD
24-09-2010, 23:49
un altra cosa.. come faccio ad aggiungere al valore che prendo un numero per esempio se prendo 10 come faccio ad aggiungergli 5? ho provato ma mi dei risultati strani..