|
| juliendeparis | Posté le 06/06/2006 @ 21:08 |
Petit astucien
6 Messages
| Bonjours,
voila j'aimerai savoir si il existe une fonction comme "strlen();" mais destinée aux entiers. en effet j'aimerai pouvoir calculer la longueur d'un entier.
Exemple :
int num1=1111;
int num2=22;
longueur de num1= 4;
longueur de num2 = 2;
Si quelqu'un à la reponse surtout qu'il n'hesite pas :)
si un poste existant traite dejas de ce sujet, je suis desole de ne pas l'avoir vu, alors n'hesitez pas à me rediriger :)
Merci
|
| |
| |
| Publicité |
|
|
| juliendeparis | Posté le 06/06/2006 à 22:01 |
Petit astucien
6 Messages
| en faite je me suis debrouillé comme un grand :) :
int calcul(int nombre){
int i,j=0;
clrscr();
i=nombre;
do{
nombre=nombre/10;
j=j+1;
}while(nombre>0);
printf("L'entier %d est de longueur %d",i,j);
return(j);
getch();
}
|
| |
|
| breizhbugs | Posté le 06/06/2006 à 22:13 |
Astucien
3001 Messages
| Salut,
Tu as une drole de notion de longueur d'un entier...
Enfin bon, selon ton raisonnement, tu converti un entier en chaine de caractere et tu en mesures la longueur:
[code]
int entier = 20;
char buff[12];
sprintf(buff, "%u", entier);
printf("longueur de '%u' est de '%u'", entier, strlen(buff));
[/code]
Attention:
%u est utilise pour designe un entier positif (0 <= entier <= ~4milliard)
%d est utilise pour designe un entier (~-2milliard <= entier <= ~2milliard)
la taille max de buff-> int va jusqu'au milliard soit 10 chiffre plus le '\\\\\0' terminal d'une chaine AZT (plus un eventuel -(moins) pour nombre negatif).
EDIT:
la vache j'ai mis au moins 12 minutes pour ecrire mon post!
Attention, ton code est incorrect!
essaie calcul de '-20' par exemple!
Modifié par breizhbugs le 06/06/2006 22:20 |
| |
|
| juliendeparis | Posté le 06/06/2006 à 22:46 |
Petit astucien
6 Messages
| oui tt a fait je suis d'accord avec toi avant de calcuker un entier negatif il faudrai le rendre positif en multipliant par -1 par exemple mais la fonction était destinée a un simple affichage d'entier faisant partie d'une structure enregistré dans un fichier dans un fichier. Etant un numero d'identification il ne pouvait pas etre negatif au prealable :)
voila |
| |
|
| juliendeparis | Posté le 06/06/2006 à 22:53 |
Petit astucien
6 Messages
| en plus clair le code est le suivant et il sert a la presentation du text:
int calcultaille(int nombre){
int i,j=0;
i=nombre;
do{
nombre=nombre/10;
j=j+1;
}while(nombre>0);
return(j);
}
void ecart(int lg){
int i=0;
lg=39-(lg+1);
for(i=i;i<lg;i++)
{
printf(" ");
}
}
main(){ ....
printf("+-------------------------------------------------+");
printf("\n| AFFICHAGE |");
printf("\n+-------------------------------------------------+");
longueur=calcultaille(eleve.num);
printf("\n| NUMERO : %d",eleve.num);ecart(longueur);
printf("|\n");
...
} |
| |
|
| breizhbugs | Posté le 07/06/2006 à 13:15 |
Astucien
3001 Messages
| Salut,
S'il s'agit de faire un affichage regulier en colonne, tu peut utiliser les options d'affichage de printf et compagnie:
[code]
for (int i = 0; i < 1500; i+=50)
{
printf("-%4d\t%4d\t%d suite\n", i, i, i);
}
[/code]
cela produit le resultat suivant:
[code]
- 0 0 0 suite
- 50 50 50 suite
- 100 100 100 suite
- 150 150 150 suite
- 200 200 200 suite
- 250 250 250 suite
- 300 300 300 suite
- 350 350 350 suite
- 400 400 400 suite
- 450 450 450 suite
- 500 500 500 suite
- 550 550 550 suite
- 600 600 600 suite
- 650 650 650 suite
- 700 700 700 suite
- 750 750 750 suite
- 800 800 800 suite
- 850 850 850 suite
- 900 900 900 suite
- 950 950 950 suite
-1000 1000 1000 suite
-1050 1050 1050 suite
-1100 1100 1100 suite
-1150 1150 1150 suite
-1200 1200 1200 suite
-1250 1250 1250 suite
-1300 1300 1300 suite
-1350 1350 1350 suite
-1400 1400 1400 suite
-1450 1450 1450 suite
[/code]
le %4d sigifie que tu veut que l'entier (le 'd') soit afficher sur 4 chiffres au minimum.
le \t marque une tabulation
( http://msdn.microsoft.com/library/en-us/vclib/html/_crt_format_specification_fields_.2d_.printf_and_wprintf_functions.asp ) |
| |
|
| juliendeparis | Posté le 08/06/2006 à 14:01 |
Petit astucien
6 Messages
| pas mal je ne connais pas merci de cette info.
|
| |
|
|
| Haut de la page |