j'ai un petit soucis avec mon programme , lorsque je lui demande de calculer les n nombres impairs (dans le cas présents les 4 premiers), il ne me calcule que ceux qui sont compris jusque 4 donc (1+3) au lieu de me calculer 1 + 3 + 5 + 7 (qui sont donc les 4 premiers nombres impairs). Comment dois-je m'y prendre pour remédier à cela ? Merci de vos réponses
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n = 4;
int somme = 0, i =0;
while(n >= i)
{
if((i % 2) != 0)
{
somme = somme + i;
}
i++;
}
printf("%d", somme);
return 0;
}
C'est un peu evident, au regard de ton code, si l'on regarde la progression :
n = 4
i = 0
Premier tour de boucle :
4 >= 0 : True
0 % 2 = 0 : False
somme : 0
i : 1
Tu vois bien qu'en repetant, i va s'ecrementer de 1 a chaque fois, il prendra les valeurs 0,1,2,3,4, c'est ta condition d'arret mais c'est aussi ton calcul, tu melanges ta variable d'arret et le nombre dont tu cherches a savoir si il est pair ou impaire.
La question est : Quelle est la valeur du 4eme nombre impair ? Je te donne le debut le 1er est 1, le 2eme est 3, et le 3eme est 5 ... Tu peux alors trouver une formule qui te donne pour toute position, la valeur du nombre impair. A toi de jouer ...
Ce code vérifie pour chaque nombre entre 0 et 4 si il est impair ou non, vérifier les nombre un par un peut se justifier dans le cas ou il n'y a pas de relation connue entre les différent nombre que tu cherche, tu pourrai faire ça pour trouver les n premier nombre premier par exemple. Mais dans le cas des nombres impairs, il y a bien plus simple, car il y a une relation direct entre n et le n-ième nombre impair et on peut difficilement faire plus simple comme relation: le n-ième nombres impairs est 2*n+1.
en te servant de ça tu devrais pouvoir t'en sortir.
Je verrais plutôt une boucle for dans laquelle tu ajouterai a ta somme le nombre impair correspondant à ton itérateur.
NB: j'aurais peut-être dû préciser que le n que j'ai employé ne faisait pas référence a la variable n que tu utilise, dans ton cas c'est plutôt la variable i qui devra servir dans la relation
Ben en fait le truc c'est de devoir utiliser une boucle while afin d'y parvenir :/ .. Et je vois pas comment y arriver à part le programme que j'ai link ci-dessus , j'ai essayé ici et je n'arrive jamais au résultat 16 en prenant n = 4 ..
Sinon, pour le calcul des n premiers nombres impairs :
int sommeImpairs(int n)
{
return n * n;
}
\(1^2 = 1\) \((n + 1)^2 = n^2 + (2n + 1)\) Donc c'est bien équivalent.
- Edité par anolya 4 décembre 2014 à 2:54:12
Somme n nombre impairs
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Voilà donc ici le n++ compte les 4 premiers nombres impaires 1ier = 1 , 2ème = 3 , 3ème = 5 et 4ème = 7 , la somme vaut donc 16.
Sinon j'crois que ce que tu voulais que je fasses donne ça
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent