Corrigez mes erreurs dans cette fct en C svp
Daniel
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 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);
}
A voir également:
- Corrigez mes erreurs dans cette fct en C svp
- Trouvez l'erreur dans la structure du document et corrigez-la. ✓ - Forum Word
- Problème table des matières word titres pas pris en compte - Forum Word
- Erreur de lecture reconnecté en 3s - Forum TV & Vidéo
- Une erreur est survenue dans le script de cette page - Forum Windows 10
- Erreur dans le chargement des donnees vod - Forum Box et Streaming vidéo
2 réponses
ca serai plus facile si tu disais ca t'affiche koi comme message d'erreur
info_Louka
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
:)
Daniel
il n'y a pas de messages d'erreurs c'est juste que lors de l execution le tableau ne s'affiche pas et ça bloque est ce que sa veut dire que j'ai une boucle infinie ? :)
Y'a un TP d'info à finir je sens....
Dis nous le probleme.
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;
}
#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.
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.