Modulo - pb de comprehension du prog [Programmation C] - C - Programmation
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
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
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.
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
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
Marsh Posté le 08-12-2003 à 19:49:27
Taz a écrit : le modulo est pas encause, c'est juste savoir compter |
C'est plus le coup d'utiliser les modulo comme ça qui me genait
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
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).
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?
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