PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : integer stelligkeit prüfen



mithras
31-12-2002, 09:04
kann ich mit einer Fkt. prüfen, ob ein integer einstellig (z.B. 1,2, ... 9), oder zweistellig (10, 11 , 12 ... 99) etc. ist ?

SeeksTheMoon
31-12-2002, 11:31
Du kannst die Zahl mit dem Modulo (%) Operator immer weiter zerlegen und weißt dann, wie viele Stellen sie hat

micha
31-12-2002, 13:41
Hi,

eine Möglichkeit:



#include <stdio.h>

int digits (int num)
{
int d = 1;

while (num/=10)
d++;

return (d);
}

int main (void)
{
int num [] = { -425, -1, 0, 1, 10, 15, 100, 425, 1000, 2321, 10000, 14023, 100000, 201000 };
int i;

for (i=0; i < 14; i++)
printf ("%i -> %i-stellig\n", num[i], digits (num[i]));

return 0;
}


Gruß micha

anda_skoa
31-12-2002, 19:54
Es geht natürlich auch über den Logarithmus.

Da es in der C Math Bibliothek keinen 10er Logariothmus gibt, muß man eine Äquivalente berechnung mit dem natürlichen Logarithmus machen:



#include <math.h>

double log10(double x)
{
return (log(x) / log(10));
}

log10(10) wäre dann 1
log10(100) wäre dann 2
etc.

Ciao,
_