Probleme de code en C
Résolu/Fermé
Omaflak
-
Modifié par Omaflak le 2/07/2012 à 20:31
omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 - 3 juil. 2012 à 09:50
omaflak Messages postés 26 Date d'inscription jeudi 28 juin 2012 Statut Membre Dernière intervention 4 mars 2013 - 3 juil. 2012 à 09:50
A voir également:
- Probleme de code en C
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
2 juil. 2012 à 21:02
2 juil. 2012 à 21:02
Bonjour,
Evite les variables globales.
Aïe. int nombre[4]; signifie que nombre[i] est défini pour i=0,1,2,3.
Du coup pour nombre[4], segfault.
pow(i,10);
pow(10,i); ça sera mieux pour ton algorithme.
De plus, tu peux te passer de cette fonction en améliorant ton algorithme.
Dans ta deuxième boucle for, tu as le même problème avec nombre[j] : j varie de 1 à 4 (au lieu de 0 à 3).
nombre[j]=floor(N/facteur);
Il faut mettre un cast.
De plus, l'algorithme est faux. Car pour i=2, tu auras nombre[2]=floor(1234/100) = floor(12) = 12.0f;
Pourquoi mettre floor() ? Il ne sert à rien. De plus il faut ne pas oublier de soustraire par 10 (12-10) = 2.
Je te laisse réfléchir sur ton algorithme pour le corriger. N'hésite pas à faire le calcul à la main pour comprendre l'évolution du programme.
Evite les variables globales.
for (i=1 ; i<5 ; i++) nombre[i]
Aïe. int nombre[4]; signifie que nombre[i] est défini pour i=0,1,2,3.
Du coup pour nombre[4], segfault.
pow(i,10);
pow(10,i); ça sera mieux pour ton algorithme.
De plus, tu peux te passer de cette fonction en améliorant ton algorithme.
Dans ta deuxième boucle for, tu as le même problème avec nombre[j] : j varie de 1 à 4 (au lieu de 0 à 3).
nombre[j]=floor(N/facteur);
Il faut mettre un cast.
De plus, l'algorithme est faux. Car pour i=2, tu auras nombre[2]=floor(1234/100) = floor(12) = 12.0f;
Pourquoi mettre floor() ? Il ne sert à rien. De plus il faut ne pas oublier de soustraire par 10 (12-10) = 2.
Je te laisse réfléchir sur ton algorithme pour le corriger. N'hésite pas à faire le calcul à la main pour comprendre l'évolution du programme.
omaflak
Messages postés
26
Date d'inscription
jeudi 28 juin 2012
Statut
Membre
Dernière intervention
4 mars 2013
1
Modifié par omaflak le 3/07/2012 à 10:15
Modifié par omaflak le 3/07/2012 à 10:15
Merci beaucoup pour ton aide 'fiddy .
J'ai regler le probleme en améliorant mon algorithme ;) A Plus
J'ai regler le probleme en améliorant mon algorithme ;) A Plus