kleiner algorithmus

ShabbY

Mitglied
kann mir bitte mal jemand einen algorithmus geben, der berechnet wieviele ziffern eine zahl hat. oder vielleicht ein denkanstöse geben, bin für alles dankbar.
 
ein int(oder was weiss ich was) in ein string umwandeln und dann mit strlen die stringlänge abfragen...
 
Servus!

Hab da noch ne Idee, die aber nur mit ganzzahligen Werten funktioniert...

n = 10000
Ziffern = Nachkommastellenabschneiden(lg(n)) + 1

lg --> Zehnerlogartithmus

Bsp.:
n = 46356

lg(n) = 4,666105954...
Nachkommastellen abschneiden(lg(n)) = 4
Ziffern = 4 + 1 = 5

OK?


Gruss Tom
 
Code:
#include <stdio.h>

int main(int argc, char *argv[])
{
	int zahl;
	char temp[99];

	printf("Bitte eine Zahl eingeben: ");
	scanf("%i", &zahl);

	sprintf(temp, "%i", zahl);
	printf("Die Zahl %i hat %i stelle(n).\n", zahl, strlen(temp));

	return 0;
}

das geht auch mit fließkommazahlen... allerdings sollte man beachten, das er dann den PUNKT -> "25.12" auch mit zählt..
 
genau so was habe ich mir heute programmiert aber das ist schon cool mit der lg(n) sicher viel schneller als meine idee
kann uach nur die anzahl der ziffern von ganzaligen ziffern berechnen aber ist dafür recht simpel

Code:
int nTemp; // Halt deine Zahl
while(nTemp)
{
   nTemp /= 10;
}
irgendwann ist der wert null und die funktion bricht ab ;) in nTemp ist die anzahl der ziffern.
aber das mit lg(n) muss ich sofort einbauen.
 
zum lg(n)
wie schneide ich die nachkommer zahlen ab ohne das gerundet wird ? habs mit floor() versucht aber das ding rundet ab.
und wenn ich auf int caste rundet der auch ?!

edit:
problem gelöst habe nur den flaschen log benutzt
für die die es wissen wollen *g*
die math.h includen
und dann log10() verwenden

edit die 2te:
man darf aber nicht vergessen das es keinen lg(0) gibt ! dann gibs nen mathematisches error und die funktion gibt irgend einen beliebigen wert zurück !
 
Zuletzt bearbeitet:
Zurück