[Programme C] Produit des doubles des n premiers entiers
Résolu
Icylph
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
cocodu67... Messages postés 3178 Date d'inscription Statut Membre Dernière intervention -
cocodu67... Messages postés 3178 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous,
alors voila, comme le dit le titre j'ai un programme à écrire qui doit calculer la somme de n premiers entiers. Donc déjà voila ce que j'ai écrit :
Et je n'arrive pas du tout à comprendre pourquoi quand je le lance et que je lui demande pour les 3 premiers entiers il me renvoi 24 au lieu de 48.
Si vous pouviez m'apporter vos lumières ça serait grandiose parce que je commence à désespérer là....
alors voila, comme le dit le titre j'ai un programme à écrire qui doit calculer la somme de n premiers entiers. Donc déjà voila ce que j'ai écrit :
int prodoubl(int n){
if(n<1)return 0;
else for(n;n>1;n--)return 2*n*prodoubl(n-1);
}
int n;
main(){
printf("Entrez un nombre : ");
scanf("%d", &n);
printf("Le produit des doubles des %d premiers entiers est %d\n", n, prodoubl(n));
}
Et je n'arrive pas du tout à comprendre pourquoi quand je le lance et que je lui demande pour les 3 premiers entiers il me renvoi 24 au lieu de 48.
Si vous pouviez m'apporter vos lumières ça serait grandiose parce que je commence à désespérer là....
A voir également:
- Écrire un programme qui calcule la somme des nombres de 1 à n
- Formule somme excel colonne - Guide
- Ecrire en gras sur whatsapp - Guide
- Somme si couleur - Guide
- Comment calculer la moyenne sur excel - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
Lu'
Essaye avec ça
Essaye avec ça
int prodoubl(int n) { int Resultat = 0; int i; if(n<1) return 0; else { for(i=0; i<=n;i++) Resultat = Resultat + i; return Resulat; } }
Icylph
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
Bonsoir et merci de ta réponse mais il me semble que ça ne répond pas à mes attentes puisque le but de ce programme serait de calculer un produit. Pour l'exemple (1*2)*(2*2)*(3*2).
fiddy
Messages postés
11069
Date d'inscription
Statut
Contributeur
Dernière intervention
1 846
Ya d'autres remarques à tenir compte ;-)))
Bonjour,
main()
Le prototype du main() sans argument est : int main(void)
int n;
A mettre dans main() pour deux raisons :
1/ On évite les variables globales
2/ Tu passes la variable en paramètre, donc tu ne te sers pas de la spécificité globale.
N'oublie pas le return 0; à la fin du main() pour dire que tout s'est bien déroulé.
else for(n;n>1;n--)return 2*n*prodoubl(n-1);
Tu mélanges deux algorithmes : l'approche récursive et l'approche itérative. Que souhaites-tu implémenter ?
Cdlt,
main()
Le prototype du main() sans argument est : int main(void)
int n;
A mettre dans main() pour deux raisons :
1/ On évite les variables globales
2/ Tu passes la variable en paramètre, donc tu ne te sers pas de la spécificité globale.
N'oublie pas le return 0; à la fin du main() pour dire que tout s'est bien déroulé.
else for(n;n>1;n--)return 2*n*prodoubl(n-1);
Tu mélanges deux algorithmes : l'approche récursive et l'approche itérative. Que souhaites-tu implémenter ?
Cdlt,
OMG... A 19h30 j'étais déjà fatigué au point d'écrire n'importe quoi...
En fait je parlais bien de produits et des n premiers nombres entiers, pas des nombres premiers.
Au passage merci pour tes interventions : tes remarques dont je prendrais note pour mes futurs programmes et tes questions qui m'ont finalement permis de me rendre compte des mes erreurs dans ce programme.
Je m'en vais de ce pas poster la correction et aller me coucher avant d'écrire d'autres aberrations.
Icylph, ou comment créer des problèmes la ou il n'y en a pas.
En fait je parlais bien de produits et des n premiers nombres entiers, pas des nombres premiers.
Au passage merci pour tes interventions : tes remarques dont je prendrais note pour mes futurs programmes et tes questions qui m'ont finalement permis de me rendre compte des mes erreurs dans ce programme.
Je m'en vais de ce pas poster la correction et aller me coucher avant d'écrire d'autres aberrations.
Icylph, ou comment créer des problèmes la ou il n'y en a pas.
Bon et bien grâce à mes deux sauveurs j'ai pu modifier mon programme de façon à ce qu'il soit fonctionnel. Je vous donne donc le code source au passage :
Merci encore à fiddy et coco pour votre aide.
int prodoubl(int n){
int i=1;
if(n<1)return 0;
else for(n;n>0;n--)i=i*n*2;
return i;
}
int main(void){
int n;
printf("Entrez un nombre : ");
scanf("%d", &n);
printf("Le produit des doubles des %d premiers entiers est %d\n", n, prodoubl(n));
return 0;
}
Merci encore à fiddy et coco pour votre aide.
Ah, c'est beaucoup mieux :-).
Deux derniers petits conseils :
for(n;n>0;n--)i=i*n*2;
Bizarre ton initialisation qui fait rien. Autant mettre : for(;n>0;n--) i=i*n*2;
J'irais même plus loin en te conseillant d'utiliser une bête boucle while.
Et ton i, tu pourrais même le déclarer dans le else pour en réduire sa portée.
Et là, c'est parfait ;-)
Cdlt
Deux derniers petits conseils :
for(n;n>0;n--)i=i*n*2;
Bizarre ton initialisation qui fait rien. Autant mettre : for(;n>0;n--) i=i*n*2;
J'irais même plus loin en te conseillant d'utiliser une bête boucle while.
Et ton i, tu pourrais même le déclarer dans le else pour en réduire sa portée.
Et là, c'est parfait ;-)
Cdlt