Od razu zaznaczam że jestem początkujący [wstyd]
Jak sprawdzić ilo cyfrowa jest liczba w zmiennej int??
Dzięki za wszelkie odpowiedzi :d
//pisz sensowne tematy! - m.M
Od razu zaznaczam że jestem początkujący [wstyd]
Jak sprawdzić ilo cyfrowa jest liczba w zmiennej int??
Dzięki za wszelkie odpowiedzi :d
//pisz sensowne tematy! - m.M
Nie, sizeof() wyświetla wynik w bajtach, jezeli chcesz sprawdzic ile ma cyfr int to
#include<stdlib.h>
main()
{
int liczba=999,l_cyfr;
char wpis[10];
itoa(liczba,wpis,10);
l_cyfr=strlen(wpis);
}
int n = 999;
int i = 0;
for(; n < 1; n /= 10) i++;
o ile zadziala to w i powinna byc ilosc cyfr... chyba :-|
mała poprawka, nie dołączyłem biblioteki <string.h>
ew mozna jeszcze sposobem czysto matematycznym, czyli
liczba_cyfr == logarytm przy podstawie k z liczby + 1
gdzie k to system liczbowy w jakim chcesz miec wynik, np 10
mniej wiecej kod przykladowy wygladal by tak:
#include<stdio.h>
#include<math.h>
#define STALA_K 0.0000000001
int
liczba_cyfr( int liczba, int system )
{
return (int)( ( logl( liczba ) / logl( system ) ) + 1 + STALA_K );
}
int
main( void )
{
int liczby[ ] = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999,
1, 10, 100, 1000, 10000, 100000, 1000000, 10000000 };
int s_liczby = sizeof( liczby ) / sizeof( int );
int i;
for( i = 0; i < s_liczby; i++ )
{
printf( "liczba %i ma cyfr: %i\\n", liczby[i], liczba_cyfr( liczby[i] ) );
}
return 0;
}
STALA_K wynika tylko i wylacznie z niedokladnosci floata ;p, wrazie czego wez ja jeszcze troche zmniejsz, tj dodaj wiecej 0 przed 1.. a tak poza tym to dziala dobrze ;>