|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Moderatore
Iscritto dal: Oct 2009
Città: Roma
Messaggi: 16154
|
[C] Calcolare il numero di cifre di un intero
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 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 ![]() PS: non è un esercizio assegnato dalla scuola, ho visto che non si può chiedere
__________________
ITX 9700X | 64GB@6000 | 5070Ti | 2TB | Win11 | 27''QHD@180Hz+C4 42'' | TUF 7940HS | 32GB@5600 | 4070M | 2TB | Bazzite | 15.6''FHD@144Hz | Legion Go S Z1E | 32GB | 1TB | SteamOS | 8''FHD@120Hz | Ultima modifica di X360X : 19-11-2010 alle 13:52. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 17:11. |
|
|
|
|
|
#3 |
|
Moderatore
Iscritto dal: Oct 2009
Città: Roma
Messaggi: 16154
|
ti ringrazio, così non c'è problema a farlo.
ero convinto fosse stato usato solo l'header stdio.h, ma forse mi sbaglio Codice:
#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;
}
__________________
ITX 9700X | 64GB@6000 | 5070Ti | 2TB | Win11 | 27''QHD@180Hz+C4 42'' | TUF 7940HS | 32GB@5600 | 4070M | 2TB | Bazzite | 15.6''FHD@144Hz | Legion Go S Z1E | 32GB | 1TB | SteamOS | 8''FHD@120Hz | Ultima modifica di X360X : 19-11-2010 alle 14:19. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Mar 2008
Messaggi: 267
|
Se vuoi scomporre un numero cifra per cifra ti basta convertirlo in una stringa, esempio veloce:
Codice:
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
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2008
Città: Veneto
Messaggi: 90
|
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. Codice:
#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);
}
__________________
Scheda Madre ASUS P5S800-VM S.O. Windows Xp SP3 Cpu Pentium 4 3.06 GHz 512 + 512 Mb Ram Scheda Video ATI RADEON 9550 256 MbH.D. SEAGATE ST3200826A |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:52.




















