[Programmation C] Modulo - pb de comprehension du prog

Modulo - pb de comprehension du prog [Programmation C] - C - Programmation

Marsh Posté le 08-12-2003 à 19:20:59    

Salut,
 
J'ai un petit prog que je dois commenter mais y'a des points que je ne comprends pas.
Le programme simule la fonction "cat" en Unix a la différence qu'en plus il affiche les numéros de ligne en début de ligne sous la forme 000 (on peut donc aller jusqu'à 999).
 
Voila la fonction avec laquelle j'ai du mal.
Elle reçoit un numéro de ligne (par exemple 1,2,3...) et renvoie le numéro sous la forme 001,002,003...  
 
 
char * conversion(int n)
   {
   //déclaration variables
 
   int u=0; //pour les unités
   int d=0; //pour les dizaines
   int c=0; //pour les centaines
   char U,D,C; //3 chaines de caractères
   char *res; //pointeur sur chaine
 
   //code
 
   //je comprends pas ça-je vois ce que ça fait mais j'arrive pas a l'expliquer
   u=n%10;    
   d=((n-u)%100)/10;
   C=((n-u-d)%1000)/100;
 
 
   //la non plus comprend pas- je crois que ça a rapport ave cle code ascii
   U='0'+u;
   D='0'+d;
   C='0'+c;
   //on alloue a res une taille de 4 caracteres
   res=(char *)malloc(4*sizeof(char));
   //initialisation
   res[0]='0';
   res[1]='0';
   res[2]='0';
   //on affecte a chacun des elements les valeurs de C,D,U et le dernier vaut '\0'(fin de ligne)  
   res[0]=C;
   res[1]=D;
   res[2]=U;
   res[3]='\0';
   return res; //retourne la valeur de res (par exemple 025\0)
   }
 
 
 
Quelqu'un pourrait il m'aider svp :??:


Message édité par neyro le 08-12-2003 à 19:21:18
Reply

Marsh Posté le 08-12-2003 à 19:20:59   

Reply

Marsh Posté le 08-12-2003 à 19:23:44    

essaie sprintf

Reply

Marsh Posté le 08-12-2003 à 19:25:13    

Mais non, le prog marche bien :)
C'est juste les commentaires pour la compréhension
Le but est de ne pas utiliser printf & co

Reply

Marsh Posté le 08-12-2003 à 19:29:39    

ben tu oublies des coefficients multiplicatifs, c'est juste de l'algo
 
 
n %= 1000;
 
centainte <- n/100;
dizaine <- (n - centaine*100)/10
unité <- n - centaine*100 - dizaine*10

Reply

Marsh Posté le 08-12-2003 à 19:32:21    

au fait :
- le cast du malloc est inutile, vérifie plutôt que malloc ne te renvoie pas NULL
- sizeof(char) ==1 par définition
 
 
tes initialisation n'en sont pas. ne les fait pas. tu as beaucoup de variables pour pas grand chose au final quand même.

Reply

Marsh Posté le 08-12-2003 à 19:37:50    

Merci :)
Comprends mieux pour le modulo
Pour le code, on nous l'a donné comme ça
C sur qu'il doit y avoir + simple
 

Reply

Marsh Posté le 08-12-2003 à 19:39:41    

le modulo est pas encause, c'est juste savoir compter
 
n = c*100 + d*10 +u


Message édité par Taz le 08-12-2003 à 19:40:00
Reply

Marsh Posté le 08-12-2003 à 19:40:46    

:D

Reply

Marsh Posté le 08-12-2003 à 19:49:27    

Taz a écrit :

le modulo est pas encause, c'est juste savoir compter
 
n = c*100 + d*10 +u


 
C'est plus le coup d'utiliser les modulo comme ça qui me genait :)

Reply

Marsh Posté le 08-12-2003 à 19:56:55    

bah non puisque ton erreur c'est d'avoir oublié des multiplications, à moins que tu n'es pas bien saisi ce qu'est le modulo

Reply

Marsh Posté le 08-12-2003 à 19:56:55   

Reply

Marsh Posté le 08-12-2003 à 20:04:32    

Taz a écrit :

n = c*100 + d*10 +u

Tiens, ça me fait penser qu'il doit y avoir des langages logiques où on peut exprimer ça directement (avec n connu et le langage se démerde pour trouver c, d et u).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-12-2003 à 20:09:05    

Taz a écrit :

bah non puisque ton erreur c'est d'avoir oublié des multiplications, à moins que tu n'es pas bien saisi ce qu'est le modulo


 
Ben j'ai du mal avec ça
C'est bien le reste de la division non?

Reply

Marsh Posté le 08-12-2003 à 20:11:25    

modulo des histoire de signe
division entière ici

Reply

Marsh Posté le 08-12-2003 à 20:13:25    

ok :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed