cs_neutrix
Messages postés10Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention 4 mai 2005
-
27 avril 2005 à 11:56
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 2008
-
27 avril 2005 à 15:59
salut
voila
j'ai besoin d'aide
je dois convertir un nombre en tableau de chiffres
123456 = > [1,2,3,4,5,6]
jusque la tout va bien ... le probleme est : la reservation memoire dynamique avec les machin calloc malloc ou autres ....
mon nombre peut changer donc le nombre d'element dans le tableau créé varie.
//------------------------------------------------------------------------------
// Fonction calculant le nombre de décimales d'un entier -> marche seulement
// avec un nombre inférieur à 1 milliard (long int)
// remarque: int s'arrète à 32 000.
//------------------------------------------------------------------------------
int calc_nbr_dec(long int nbr1)
{
int i;
i=0;
long int q;
q=1;
while (q != 0)
{
q=nbr1/10;
nbr1=q;
i=i+1;
}
return i;
}
//------------------------------------------------------------------------------
// Fonction qui extrait les décimales d'un entier et les stocke dans un tableau
// 127 -> a[2]=1; a[1]=2; a[0]=7;
//------------------------------------------------------------------------------
void extraire_dec(long int nbr2, long int a[])
{
int j; //indice du tableau qui débute à 0
long int b;
b=nbr2;
long int d;
d=calc_nbr_dec(nbr2);
for (j = 0 ; j < d ; j++)
{
a[d-j-1]= b / (pow(10,d-j-1));
b = b - (pow(10,d-j-1)) * ((a[d-j-1]));
}
}
void main()
{
long int c[2]; < ===== le probleme est ici si je veux le nombre 2459 (4 decimale cela ne va pas)
long int nombre;
nombre=999;
extraire_dec(nombre , c );
printf("le nombre est:%ld\n",nombre);
printf("le nbre de decimale est:%ld \n",calc_nbr_dec(nombre));
//printf("la premiere decimale est:%i\n",c[3]);
printf("la seconde decimale est:%i\n",c[2]);
printf("la troisieme decimale est:%i\n",c[1]);
printf("la quatrieme decimale est:%i\n",c[0]);
system("pause");
}
Il est important de comprendre que par des souci de memoire je ne paeux me permettre de fixer le nombre decimale a 10 par exemple, je dois imperativement faire le truc de la memoire dynamique pour gagner de la place
Ce que je dis est peut etre faux, si vous voyez un autre moyen .....
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 20081 27 avril 2005 à 15:59
et surtout ne pas oublier a la fin :
free(c); pour liberer la memoire
Ici c'est pas trop grave mais pour de gros tableaux c'est important
Enfin ca c'est du C il y a peut etre autre chose en C++