PDA

View Full Version : [C] Calcolare il numero di cifre di un intero


X360X
19-11-2010, 13:44
Come posso fare, dato un intero, a farmi dire il numero di cifre che lo compongono?
ovvero:
2546 = 4
435678 = 6
...

dovrebbe essere stato fatto con le semplici printf, scanf e for/while (col solo header stdio.h)

non ne ho idea quindi non ho scritto nulla (inutile scrivervi che immetto il numero :D )

nel caso non si possa gradirei anche un esempio col metodo più semplice (è un esercizio di base, non può esserci granché)

poi vorrei anche sommare queste cifre, scriverle in ordine inverso...magari capito questo riesco a farlo :fagiano:

PS: non è un esercizio assegnato dalla scuola, ho visto che non si può chiedere

rеpne scasb
19-11-2010, 13:54

X360X
19-11-2010, 14:07
ti ringrazio, così non c'è problema a farlo.
ero convinto fosse stato usato solo l'header stdio.h, ma forse mi sbaglio

#include <stdio.h>
#include <math.h>

int main() {
int x, ncifre;
printf("Inserire un intero: ", x);
scanf("%d", &x);
ncifre=log10(x)+1;
printf ("Questo numero è composto da %d cifre\n", ncifre);
return 0;
}

però in effetti con il resto che voglio provare a fare centra poco, per le altre cose dovrei proprio scomporre il numero in singole cifre...mi ci toccherà riflettere un bel po' mi sa :D

Supdario
19-11-2010, 15:12
Se vuoi scomporre un numero cifra per cifra ti basta convertirlo in una stringa, esempio veloce:


int numero, len;
printf("Inserisci numero: ");
scanf("%d", &numero);
len = (int) log10(numero)+1;
char *cifre = (char *) malloc(sizeof(char) * (len+1));
sprintf(cifre, "%d", numero);
//Numero nella stringa: cifre

Mr.Gamp
22-11-2010, 11:23
Oddio mi sembra abbastanza banale come esercizio, visto che è un numero in base dieci ti basta dividerlo per dieci finchè non ottieni zero, e ad ogni ciclo incrementi di uno il contatore delle cifre.
prendiamo 1234 come numero dividiamo per dieci e otteniamo 123 (count=1) dividiamo per 10 e otteniamo 12 (count=2) dividiamo ancora 1 (count=3) dividiamo otteniamo 0 (count=4) il ciclo termina poiché n = 0.


#include <stdio.h>
int main(){
int n, count=0;

printf("Inserisci un numero: ");
scanf("%d", &n);
while ( n ){
n /= 10;
count++;
}
printf("Il numero %d ha %d cifre\n", n, count);
}