|
|
|
|
Strumenti |
19-11-2010, 12:44 | #1 |
Moderatore
Iscritto dal: Oct 2009
Città: Roma
Messaggi: 16057
|
[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
__________________
Meshroom S Blue || Fractal Ion 650G || P12 Slim PWM || AXP120-X67 ARGB || B550M PRO-VDH WiFi 5600X@PPT120 +200Clock -15Curve || 64GB 3200@3600 C16 || Asus 4070 12G@0.935V 2.7/11.5GHz FURY Renegade 2TB(gen4) || WD Black 500GB(gen3) || The Notebook || PS5|Series S|Deck|RPi4 2G Ultima modifica di X360X : 19-11-2010 alle 12:52. |
19-11-2010, 12:54 | #2 |
Senior Member
Iscritto dal: May 2008
Messaggi: 530
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 16:11. |
19-11-2010, 13:07 | #3 |
Moderatore
Iscritto dal: Oct 2009
Città: Roma
Messaggi: 16057
|
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; }
__________________
Meshroom S Blue || Fractal Ion 650G || P12 Slim PWM || AXP120-X67 ARGB || B550M PRO-VDH WiFi 5600X@PPT120 +200Clock -15Curve || 64GB 3200@3600 C16 || Asus 4070 12G@0.935V 2.7/11.5GHz FURY Renegade 2TB(gen4) || WD Black 500GB(gen3) || The Notebook || PS5|Series S|Deck|RPi4 2G Ultima modifica di X360X : 19-11-2010 alle 13:19. |
19-11-2010, 14:12 | #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 |
22-11-2010, 10:23 | #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: 20:21.