Aide pour pour petit programme en c
rem22
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
mype Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
mype Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Il y a un moment j'ai essayé de faire un petit programme dont le but était de décomposer un nombre en produit de nombres premiers et j'ai abandonné car il y avait des fautes que je ne trouvais pas.
Et maintenant je compte m'y remettre et j'aimerais savoir si quelqu'un pouvait m'aider à trouver les fautes.
Si quelqu'un veut bien j'envoie le code.
merci.
Si mon post n'est pas ou il faut désolé.
Il y a un moment j'ai essayé de faire un petit programme dont le but était de décomposer un nombre en produit de nombres premiers et j'ai abandonné car il y avait des fautes que je ne trouvais pas.
Et maintenant je compte m'y remettre et j'aimerais savoir si quelqu'un pouvait m'aider à trouver les fautes.
Si quelqu'un veut bien j'envoie le code.
merci.
Si mon post n'est pas ou il faut désolé.
A voir également:
- Aide pour pour petit programme en c
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Petit 2 ✓ - Forum Bureautique
- Comment imprimer une photo en petit - Forum Photo numérique
- Trier du plus petit au plus grand excel - Guide
8 réponses
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long nombre =0;
long nombrede2 =0;
long nombrede3 =0;
long nombrede5 =0;
long nombrede7 =0;
long nombrede11 =0;
long nombrede13 =0;
long nombrede17 =0;
long nombrede19 =0;
long nombrede23 =0;
long nombrede29 =0;
long nombredebase =0;
printf("inscrivez un nombre \n");
scanf("%ld",&nombre);
nombre=nombredebase;
while(nombre%2==0)
{
nombre= nombre/2;
nombrede2 ++;
}
while(nombre%3==0)
{
nombre= nombre/3;
nombrede3 ++;
}
while(nombre%5==0)
{
nombre= nombre/5;
nombrede5 ++;
}
while(nombre%7==0)
{
nombre= nombre/7;
nombrede7 ++;
}
while(nombre%11==0)
{
nombre= nombre/11;
nombrede11 ++;
}
while(nombre%13==0)
{
nombre= nombre/13;
nombrede13 ++;
}
while(nombre%17==0)
{
nombre= nombre/17;
nombrede17 ++;
}
while(nombre%19==0)
{
nombre= nombre/19;
nombrede19 ++;
}
while(nombre%23==0)
{
nombre= nombre/23;
nombrede23 ++;
}
while(nombre%29==0)
{
nombre= nombre/29;
nombrede29 ++;
}
printf("il y a\n")
if(nombrede2 > 0)
{
printf("%ld\n" fois ",nombrede2);
}
else if(nombrede3>0)
{
printf("%ld\n" fois ",nombrede3);
}
else if(nombrede5>0)
{
printf("%ld\n" fois ",nombrede5) ;
}
else if(nombrede7>0)
{
printf("%ld\n" fois ",nombrede7) ;
}
else if(nombrede11>0)
{
printf("%ld\n" fois ",nombrede11) ;
}
else if(nombrede13>0)
{
printf("%ld\n" fois ",nombrede13) ;
}
else if(nombrede17>0)
{
printf("%ld\n" fois ",nombrede17) ;
}
else if(nombrede19>0)
{
printf("%ld\n" fois ",nombrede19);
}
else if(nombrede23>0)
{
printf("%ld\n" fois ",nombrede23) ;
}
else if(nombrede99>0)
{
printf("%ld\n" fois ",nombrede29);
}
printf("dans %ld",nombredebase);
system("PAUSE");
return 0;
}
#include <stdlib.h>
int main(int argc, char *argv[])
{
long nombre =0;
long nombrede2 =0;
long nombrede3 =0;
long nombrede5 =0;
long nombrede7 =0;
long nombrede11 =0;
long nombrede13 =0;
long nombrede17 =0;
long nombrede19 =0;
long nombrede23 =0;
long nombrede29 =0;
long nombredebase =0;
printf("inscrivez un nombre \n");
scanf("%ld",&nombre);
nombre=nombredebase;
while(nombre%2==0)
{
nombre= nombre/2;
nombrede2 ++;
}
while(nombre%3==0)
{
nombre= nombre/3;
nombrede3 ++;
}
while(nombre%5==0)
{
nombre= nombre/5;
nombrede5 ++;
}
while(nombre%7==0)
{
nombre= nombre/7;
nombrede7 ++;
}
while(nombre%11==0)
{
nombre= nombre/11;
nombrede11 ++;
}
while(nombre%13==0)
{
nombre= nombre/13;
nombrede13 ++;
}
while(nombre%17==0)
{
nombre= nombre/17;
nombrede17 ++;
}
while(nombre%19==0)
{
nombre= nombre/19;
nombrede19 ++;
}
while(nombre%23==0)
{
nombre= nombre/23;
nombrede23 ++;
}
while(nombre%29==0)
{
nombre= nombre/29;
nombrede29 ++;
}
printf("il y a\n")
if(nombrede2 > 0)
{
printf("%ld\n" fois ",nombrede2);
}
else if(nombrede3>0)
{
printf("%ld\n" fois ",nombrede3);
}
else if(nombrede5>0)
{
printf("%ld\n" fois ",nombrede5) ;
}
else if(nombrede7>0)
{
printf("%ld\n" fois ",nombrede7) ;
}
else if(nombrede11>0)
{
printf("%ld\n" fois ",nombrede11) ;
}
else if(nombrede13>0)
{
printf("%ld\n" fois ",nombrede13) ;
}
else if(nombrede17>0)
{
printf("%ld\n" fois ",nombrede17) ;
}
else if(nombrede19>0)
{
printf("%ld\n" fois ",nombrede19);
}
else if(nombrede23>0)
{
printf("%ld\n" fois ",nombrede23) ;
}
else if(nombrede99>0)
{
printf("%ld\n" fois ",nombrede29);
}
printf("dans %ld",nombredebase);
system("PAUSE");
return 0;
}
alor ton programme est loin d'etre simplifié puisque tu repete plusieurs fois la meme chose...
mais essaye comme ça , ça devrrait marcher
mais essaye comme ça , ça devrrait marcher
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long nombre =0; long nombrede2 =0; long nombrede3 =0; long nombrede5 =0; long nombrede7 =0; long nombrede11 =0; long nombrede13 =0; long nombrede17 =0; long nombrede19 =0; long nombrede23 =0; long nombrede29 =0; long nombredebase =0; int i,nbr_fois=0; printf("inscrivez un nombre \n"); scanf("%ld",&nombre); nombredebase=nombre; while(nombre%29==0) { nombre= nombre/29; nombrede29 ++;nbr_fois++; } while(nombre%23==0) { nombre= nombre/23; nombrede23 ++;nbr_fois++; } while(nombre%19==0) { nombre= nombre/19; nombrede19 ++;nbr_fois++; } while(nombre%17==0) { nombre= nombre/17; nombrede17 ++;nbr_fois++; } while(nombre%13==0) { nombre= nombre/13; nombrede13 ++;nbr_fois++; } while(nombre%11==0) { nombre= nombre/11; nombrede11 ++;nbr_fois++; } while(nombre%7==0) { nombre= nombre/7; nombrede7 ++;nbr_fois++; } while(nombre%5==0) { nombre= nombre/5; nombrede5 ++;nbr_fois++; } while(nombre%3==0) { nombre= nombre/3; nombrede3 ++;nbr_fois++; } while(nombre%2==0) { nombre= nombre/2; nombrede2 ++;nbr_fois++; } nbr_fois--; printf("nombre decompose en produit de nombre premier: "); if(nombrede2 > 0) { for(i=0;i<nombrede2;i++){ printf("2 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede3 > 0) { for(i=0;i<nombrede3;i++){ printf("3 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede5 > 0) { for(i=0;i<nombrede5;i++){ printf("5 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede7 > 0) { for(i=0;i<nombrede7;i++){ printf("7 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede11 > 0) { for(i=0;i<nombrede11;i++){ printf("11 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede13 > 0) { for(i=0;i<nombrede13;i++){ printf("13 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede17 > 0) { for(i=0;i<nombrede17;i++){ printf("17 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede19 > 0) { for(i=0;i<nombrede19;i++){ printf("19 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede23 > 0) { for(i=0;i<nombrede23;i++){ printf("23 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } if(nombrede29 > 0) { for(i=0;i<nombrede29;i++){ printf("29 "); if(nbr_fois!=0) {printf("X ");nbr_fois--;}} } printf("= %ld\n",nombredebase); system("PAUSE"); return 0; }
Salut,
a propos de ton amélioration:
-Pourquoi est-ce que tu as mis les nombres premiers du plus grand au plus petit?
-Je ne comprends pas très bien la partie avec les "for" , "nbr_fois" et "i" , pourrais-tu me l'expliquer?
Et:
-Qu'est-ce qui ne jouait pas à ma version?
Comment pourrait-on la raccourcir?
merci
a propos de ton amélioration:
-Pourquoi est-ce que tu as mis les nombres premiers du plus grand au plus petit?
-Je ne comprends pas très bien la partie avec les "for" , "nbr_fois" et "i" , pourrais-tu me l'expliquer?
Et:
-Qu'est-ce qui ne jouait pas à ma version?
Comment pourrait-on la raccourcir?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Tant qu'on y est j'aurais deux autres questions:
1)Si je veux pouvoir un peu essayer de comprendre les codes sources des programmes linux,et même essayer de changer une ou deux lignes,je peux le faire avec le c ?
2)j'ai installé code::blocks et maintenant quand je veux le lancer il me met :
Deleted stale lock file '/home/bottinelli/Code::Blocks-bottinelli'.
et une autre fenêtre en anglais qui me dit -je crois-qu'un report debug a été lancè et qu'ils sont désolé(et pleins d'autres choses en anglais),
je ne sais pas comment mettre le screen que j'ai fait sur le message,
en tous cas je n'arrive pas à ouvrir code::blocks
si quelqu'un a une idée
merci
Tant qu'on y est j'aurais deux autres questions:
1)Si je veux pouvoir un peu essayer de comprendre les codes sources des programmes linux,et même essayer de changer une ou deux lignes,je peux le faire avec le c ?
2)j'ai installé code::blocks et maintenant quand je veux le lancer il me met :
Deleted stale lock file '/home/bottinelli/Code::Blocks-bottinelli'.
et une autre fenêtre en anglais qui me dit -je crois-qu'un report debug a été lancè et qu'ils sont désolé(et pleins d'autres choses en anglais),
je ne sais pas comment mettre le screen que j'ai fait sur le message,
en tous cas je n'arrive pas à ouvrir code::blocks
si quelqu'un a une idée
merci
-Pourquoi est-ce que tu as mis les nombres premiers du plus grand au plus petit?
en fait comme ça parce que je trouve ça plus propre mais bon je pense que ça n'a pas trop d'importance en partant du plus petite ça devrait marché aussi
-Je ne comprends pas très bien la partie avec les "for" , "nbr_fois" et "i" , pourrais-tu me l'expliquer?
en fait cette partie c'est juste pour calculer le nombre de signe multiplier X et bien les placer lors du resultat, comme ça on calcule le nombre de signe multiplier qui vaut le nombre de nombre premier - 1 ensuite avec le for et nbr_fois je peux placer le signe X entre chaque nombre premier qui décompose le nombre
-Qu'est-ce qui ne jouait pas à ma version?
dans ta version deja tu avais des erreurs de syntaxe dans tes printf
ex:
ensuite apres que l'utilisateur est donné une valeur a nombre avec le scanf tu fais
Comment pourrait-on la raccourcir?
tu pourrais utiliser des tableaux pour stocker les nombres premiers et les nombredex ainsi ça t'eviterait d'avoir plusieur boucle while et if une ou deux suffirait...
Si je veux pouvoir un peu essayer de comprendre les codes sources des programmes linux,et même essayer de changer une ou deux lignes,je peux le faire avec le c ?
oui tout a fait le kernel de linux est meme ecrit en C
et pour code::blocs moi je l'utilise sur windows mais sur linux j'utilise gcc mais si tu veux comme meme l'installer sur linux voici un petit lien pour l'installer
en fait comme ça parce que je trouve ça plus propre mais bon je pense que ça n'a pas trop d'importance en partant du plus petite ça devrait marché aussi
-Je ne comprends pas très bien la partie avec les "for" , "nbr_fois" et "i" , pourrais-tu me l'expliquer?
en fait cette partie c'est juste pour calculer le nombre de signe multiplier X et bien les placer lors du resultat, comme ça on calcule le nombre de signe multiplier qui vaut le nombre de nombre premier - 1 ensuite avec le for et nbr_fois je peux placer le signe X entre chaque nombre premier qui décompose le nombre
-Qu'est-ce qui ne jouait pas à ma version?
dans ta version deja tu avais des erreurs de syntaxe dans tes printf
ex:
printf("%ld\n" fois ",nombrede29);tu as mis des guillements a l'interieur de guillemets on ne peux pas faire ça...
ensuite apres que l'utilisateur est donné une valeur a nombre avec le scanf tu fais
nombre=nombredebase;donc la tu donnes a nombre la valeur de nombredebase soit 0 il faudrait plutot faire
nombredebase=nombre;
Comment pourrait-on la raccourcir?
tu pourrais utiliser des tableaux pour stocker les nombres premiers et les nombredex ainsi ça t'eviterait d'avoir plusieur boucle while et if une ou deux suffirait...
Si je veux pouvoir un peu essayer de comprendre les codes sources des programmes linux,et même essayer de changer une ou deux lignes,je peux le faire avec le c ?
oui tout a fait le kernel de linux est meme ecrit en C
et pour code::blocs moi je l'utilise sur windows mais sur linux j'utilise gcc mais si tu veux comme meme l'installer sur linux voici un petit lien pour l'installer