"precision" entiers

Signaler
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005
-
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008
-
Bonjour,

j'aimerais simplement savoir si il est possible de formater un entier. je m'explique : j'ai des entiers qui varient dans un certain intervalle, et une classe TChaine qui me permet de caster mes entiers en string. je voudrais en fait que mes entiers soient tous representes par le meme nombre de caracteres. par exemple si j'ai la suite de 1 a 15, j'aimerais pourvoir stocker dans des TChaine les entiers de la facon suivante :
01 02 03 04 ... 13 14 15
de mem, si j'ai plus de 100 entiers je voudrais que cela se fasse comme ca :
001 002 003 ... 099 100 101 102 ...

pouvez vous m'aider ?
merci d'avance

3 réponses

Messages postés
15
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
15 juin 2006

Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008

plus généralement :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct texte
{
char* donnee;
int taille;
};

texte fct(int a, int b)
{
int i, j; // Bcl
int pos=0; // Position dans la chaine final
texte result; // Renverra le résultat
int taille_nbre=(int)log10(b)+1;// Récupère le nombre de chiffre

// Trouve la taille de la chaine
result.taille=(b-a+1)*taille_nbre + (b-a);

// Alloue la mémoire
result.donnee=(char*)malloc(sizeof(char)*(result.taille+1));

// Y'a plus qu'a remplir, parcoure chaque entier
for(i=a; i<=b; i++)
{
// Parcoure la taille du nombre
for(j=taille_nbre-1; j>=0; j--)
{
// Affiche le caractère
result.donnee[pos]=(i%((int)pow(10, j+1))/(int)pow(10, j))+'0';

// Avance dans la chaine
pos++;

}

// Avance dans la chaine si il le faut
if(i!=b)
{
result.donnee[pos]=' ';
pos++;
}
}

result.donnee[pos]='\0'; // Fin de la chaine

return result;

}

int main()
{
int a, b; // l'interval
texte chaine; // chaine

// Récupère les infos
scanf("%d", &a);
scanf("%d", &b);

// Fait le calcul
chaine=fct(a, b);

// Affiche la chaine
printf("\n%s", chaine.donnee);

system("pause");
return 0;

}

>:) Stéph >:)
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008

J'ai fait un peu "bourrin"... mais si tu fais un copier-coller dans un compilateur, tu devrais mieux voir le résultat !

>:) Stéph >:)