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
Bonjour tout le monde j'ai un petit problème en C:
J'ai fait un petit programme qui est sensé me mettre chaque chiffre qui compose un nombre dans une variable d'un tableau :
EX : Nombre=1234
tableau[1]=1
tableau[2]=2
tableau[3]=3
tableau[4]=4
...mais lors du compilage il y a une erreur a la ligne 35, j'ai tout esseyer mais je ne vois pas ou est l'erreur....
'
'
'
Voila mon code :
'
'
'
'
'
'
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int nombre[4];
int N; // 1234

void decompose(int nombre);

int main()
{
int i;
printf("Nombre : ");
scanf("%d", &N);
printf("\n");

decompose(N);

for (i=1 ; i<5 ; i++)
{
printf("nombre[%d] = %d\n", i,nombre[i]);
}
return 0;
}

void decompose(int nombre)
{
int facteur;
int j=0,i;

for (i=3 ; i>0 ; i--)
{
j++;
facteur=pow(i,10);
nombre[j]=floor(N/facteur);
}
nombre[4]=((N/10)-floor(N/10))*10;
}


'
'
'
''
'
Merci d'avance
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 juil. 2012 à 21:02
Bonjour,
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.
2
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
Merci beaucoup pour ton aide 'fiddy .
J'ai regler le probleme en améliorant mon algorithme ;) A Plus
0