Corrigez mes erreurs dans cette fct en C svp
Daniel
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
qu'est ce qui cloche avec cette fonction ?
sachant que estPremier est une fonction qui retourne 1 si le n premier et 0 sinon
tabpremier est un tableau qui contient tout les nombres premiers (bon jusqu'a sqrt(n)
factPrem etant un tableau declare comme variable globale et que je veux remplir a l'aide de cette fonction avec les diviseurs premiers du nombre n donnée
et merci d'avance
void decomposition (int n)
{
int j=0,i=0,b;
do
{ b = estPremier(n) ;
if (b == 1)
factPrem[j] = n ;
else if (n % tabPrem[i] == 0 )
{
factPrem[j] = tabPrem[i];
j++;
decomposition (n / tabPrem[i]);
}
else i++;
} while (n != 1);
}
qu'est ce qui cloche avec cette fonction ?
sachant que estPremier est une fonction qui retourne 1 si le n premier et 0 sinon
tabpremier est un tableau qui contient tout les nombres premiers (bon jusqu'a sqrt(n)
factPrem etant un tableau declare comme variable globale et que je veux remplir a l'aide de cette fonction avec les diviseurs premiers du nombre n donnée
et merci d'avance
void decomposition (int n)
{
int j=0,i=0,b;
do
{ b = estPremier(n) ;
if (b == 1)
factPrem[j] = n ;
else if (n % tabPrem[i] == 0 )
{
factPrem[j] = tabPrem[i];
j++;
decomposition (n / tabPrem[i]);
}
else i++;
} while (n != 1);
}
2 réponses
-
ca serai plus facile si tu disais ca t'affiche koi comme message d'erreur
-
Y'a un TP d'info à finir je sens....
Dis nous le probleme.-
oui on peu dire ça comme ça en fait voila ou j'en suis l'affiche factPrem ne donne rien et bloque
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int tabPrem[100] ;int factPrem[100];
int estPremier (int n )
{
int i ;
for (i = 2 ; i <= sqrt (n);i++)
if (n % i == 0)
return 0;
return 1 ;
}
void remp (int nbr)
{
int i,b,j = 1 ;
tabPrem [0] = 2;
for (i = 3; i<= sqrt(nbr) ;i++)
{
b = estPremier (i);
if (b == 1)
{
tabPrem [j] = i;
j++;
}
}
}
void affiche (int t[])
{ int i,taille;
for (i=0; i<taille;i++)
printf("%d / ",t[i]);
}
void decomposition (int n)
{
int j=0,i=0,b;
do
{ b = estPremier(n) ;
if (b == 1)
factPrem[j] = n ;
else if (n % tabPrem[i] == 0 )
{
factPrem[j] = tabPrem[i];
j++;
decomposition (n / tabPrem[i]);
}
else i++;
} while ();
}
int main ()
{
int nbr,i;
printf ("donner le nbr a decomposer \n");
scanf("%d",&nbr );
remp(nbr);
affiche (tabPrem);
decomposition(nbr);
printf ("\n\n");
affiche (factPrem);
return 0;
} -
Bonjour,
J'ai pas tout lu, mais je vois quelques problèmes :
void affiche (int t[])
{ int i,taille;
for (i=0; i<taille;i++)
printf("%d / ",t[i]);
}
taille n'est pas initialisé. Tu ne peux donc pas le comparer avec i. Il faut l'initialiser avec la longueur du tableau.
Dans decomposition : while (); Normal que cela fasse une boucle infinie puisque tu ne mets pas de condition.
Corrige déjà ces deux points, et repose le code en le mettant entre deux balises "code" (à droite du bouton souligné). Cela sera plus agréable pour lire.
-