18/06/08 9:27
totipianurese
Ragazzi, come posso contare che una variabile di tipo intero, da quanti cifre (NUMERI) è formata??
Il mio problema è : inserendo una serie di valori, devo trovare il valore più grande e devo stampare da quante cifre è formato.
Ultima modifica effettuata da WARRIOR 19/06/08 19:46
aaa
18/06/08 12:43
John
function potenza(base,esponente:integer):longint;
var k,W:longint;
begin
K:=1;
W:=base;
While K < Esponente do
begin
K:=K+1;
W:=Base*W;
end;
potenza:=W;
end;
function cifre(f:longint):integer;
var d:integer;
begin
d:=0;
repeat
d:=d+1;
until ((f div (potenza(10,d))<1));
cifre:=d;
end;
è molto semplice trovare le cifre da cui è composto un numero INTERO:
Logica vuole che se un numero n diviso 10 dà un risultato <1 allora ha 1 cifra, se diviso 100 dà risultato <1 allora ha 2 cifre...
Esempio:
n=548
548/10=54.8
548/100=5.48
548/1000=0.548
<== questo è minore di uno, perciò n ha 3 cifre (10^3=1000)
Quindi una regoletta che si intuisce è:
Un numero n è formato da d cifre quando quel numero diviso (10 elevato alla d) produce un risultato minore di n.
Ti ho scritto brevemente una funzione che ti restituisce il numero di cifre di un numero, continuando ad incrementare un contatore D fino a quando n/(10^d) risulta minore di 1...
semplicemente devi usarlo così:
...
var a,c:integer
...
...
readln(a);
c:=cifre(a);
writeln('Il numero ',a,' ha ',c,' cifre');
...
Spero di aver soddisfatto la tua richiesta!!
Per ogni dubbio o domanda, non esitare a contattarmi!
Ultima modifica effettuata da John 18/06/08 12:52
aaa