"precision" entiers

cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005 - 11 juil. 2004 à 20:05
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008 - 14 juil. 2004 à 02:48
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

xian240482 Messages postés 15 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 15 juin 2006
11 juil. 2004 à 20:18
0
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
14 juil. 2004 à 02:15
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 >:)
0
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
14 juil. 2004 à 02:48
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 >:)
0
Rejoignez-nous