PDA

Visualizza la versione completa : Scomporre un numero intero [C]


elricmarci
10-03-2010, 15:12
Ragazzi per scuola devo fare un programma che mi permetta di scomporre un numero intero compreso tra 1 e 9999 fornito in ingresso in Migliaia centinaia decine e unit....
Pensavo di inizializzare in numero da fornire come ingresso come N....ma poi non ho la minima idea di come possa fare per scomporre il numero...
Grazie a tutti per l'aiuto...

theboss280489
10-03-2010, 15:38
Scomporre nel senso che devi trovare i fattori che moltiplicati danno quel numero?
tipo 54 = 2*3^3?

elricmarci
10-03-2010, 15:39
ad esempio ho il numero 892
la scomposizione sarebbe
8
9
2

theboss280489
10-03-2010, 15:52
Allora il prendere il numero in migliaia centinaia decine e unita ha poco senso secondo me.
Acquisisci il numero intero
poi tramite un ciclo inizi a verificare il resto dividendo per 2 (numero%2):
se il resto zero allora stampa a video il 2 e dividi il numero per 2 e fai ripartire il ciclo dal numero diviso per due.
se il resto diverso da zero allora verifica con lo stesso metodo se divisibile per tre.
se il resto zero stampa il tre e dividi il numero per tre e fai ripartire il ciclo dal numero diviso per 3.
cosi via anche aumentando: ovviamente non devi scrivere a mano %2, %3 ma devi gestire anche questi con un ciclo.
Ti faccio un esempio con 81
81 divisibile per 2? -> NO
81 divisibile per 3? -> SI ->Stampa 3 e ricomincia il ciclo con 81/3=27
27 divisibile per 2? NO->
27 divisibile per 3? SI ->Stampa 3 e ricomincia il ciclo con 27/3=9
.
.
.
gestisci il tutto fino a quanto non arrivi ad uno ovviamente
:ciauz:

theboss280489
10-03-2010, 16:09
Scusami forse non ho capito il problema. Devi fare la scomposizione in fattori oppure vuoi semplicemente la scomposizione in centinaia migliaia ecc ecc?

elricmarci
10-03-2010, 16:10
Voglio solo la scomposizione in centinaia migliaia ecc ecc di un numero fornito da input compreso tra 1 e 9999....

elricmarci
10-03-2010, 21:41
Ragazzi nessuno disposto a darmi una mano per fare quest'esercizio??

oregon
10-03-2010, 21:52
Dividi per 1000 e ottieni il valore intero della divisione e cosi' via ...

Ovviamente il codice devi cominciare a scriverlo tu ...

UnderMaken
10-03-2010, 21:59
Se come dici tu l'algoritmo semplice.
Nelle tue specifiche non c' scritto quindi io ti illustro 2 scenari

il pi facile:
- legge il numero da input come stringa (fgets)
- avrai una stringa del tipo "1234"
- ora a seconda della lunghezza della stringa tira fuori i risultati
ad es la stringa lunga 4 caratterei quindi alla posizione 0 avrai le migliaia, alla posizione 1 le centinaia ecc..
- mentre fai il passo di sopra converti il carattere letto in numero (atoi)

il meno facile:
- leggi il numero da input come intero (scanf)
- se maggiore di 1000 cominci a sottrargli 1000 e conti quante volte compi la sottrazione fino a che il numero non diventi inferiore ai 1000
- quindi stesso discorso per le centinaia, le decine e le unita

fine


Ciao

Loading