Aide

Résolu
Hellboy67 Messages postés 25 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 16 février 2006 - 11 oct. 2005 à 20:46
Hellboy67 Messages postés 25 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 16 février 2006 - 12 oct. 2005 à 15:55
Voila j'ai un exo pour les cours de prog a faire dont le code source est le suivant:

# include
# include <cassert>


using std::cout;
using std::cin;
using std::endl;


void numerique (int n, double& S);


int main ()
{
int n;
double S;

cout<<"Entrer la valeur du dernier terme de la suite (n) : ";
cin>>n;
assert(n>=1);
numerique (n, S);

cout<<"Le resultat de la suite est "<<S<<endl;
system("pause");
}



void numerique (int n, double& S)
{
int i=1;
S = 0;

while (i<n)
{
double F = (1/i);
S = S + (1/i);
i++;
}
}

Ce prog est censé calculé le résultat de la suite numérique
mais voile mon résultat (S) tombe toujours sur '1'
Quelqu'un pourrait me corriger

4 réponses

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
11 oct. 2005 à 21:03
S += (1/(float)i);

à la place de S = S + (1/i);
3
Hellboy67 Messages postés 25 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 16 février 2006
11 oct. 2005 à 22:34
Merci mogwai93 ca marche

mais tu pourrai m'expliquer a quoi le '+' et le 'float' que ta rajouter stp
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
12 oct. 2005 à 07:00
pour le '+=', c'est seulement pour l'ecriture

S = S + 1 est equivalent à S += 1 qui est équivalent à S++

donc

S = S + est equivalent à S +=



ca fonctionne de la meme facon avec -, * et /

mais ce n'est pas ca qui corrige ton probleme



c'est le (float) ou (double) devant le i qui corrige

car vu que i est declaré en int, donc il y aura division entiere

au 1er passage 1 / i est egal à 1 / 1 = 1 (qui sera ton resultat d'ailleurs)

aux autres passages, 1 / i sera egal à 0



tu aurais pu le trouver en mettant dans ta boucle :

double F = (1/i);

printf("F = %f\n", F);
0
Hellboy67 Messages postés 25 Date d'inscription lundi 19 septembre 2005 Statut Membre Dernière intervention 16 février 2006
12 oct. 2005 à 15:55
je comprend

Merci
0
Rejoignez-nous