Probleme de code en C
Résolu
Omaflak
-
omaflak Messages postés 38 Statut Membre -
omaflak Messages postés 38 Statut Membre -
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
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:
- Probleme de code en C
- Code ascii - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
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.