[Langage C]Comment faire...?
Yuku
Messages postés
199
Date d'inscription
Statut
Membre
Dernière intervention
-
saly_inf Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
saly_inf Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois créer un programme passant par une fonction qui demande à l'utilisateur un nombre k et fait la suite suivante :
1+ 1/2 + 1/3 + 1/4 + ...+1/k.
Voilà mon programme, or le résultat obtenu est toujours 1...
#include <stdio.h>
#include <stdlib.h>
using namespace std;
double SerieHarmonique(double k);
int main(int argc, char *argv[])
{
int K = 0;
double resultat = 0;
printf("Ce programme aditionne un nombre K de termes selon la suite suivante :\n1+(1/2)+(1/3)+...+(1/K)\n\nEntrez un nombre K... ");
scanf("%d", &K);
resultat = SerieHarmonique(K);
printf("\nLe resultat de la suite en fonction de K = %d est %.1lf.\n\n", K, resultat);
system("PAUSE");
return EXIT_SUCCESS;
}
double SerieHarmonique(double k)
{
int Compteur = 1;
double Resultat = 0;
do{
Resultat += (1.0/Compteur);
Compteur++;
}while(Compteur != k);
return Resultat;
}
Merci d'avance.
Je dois créer un programme passant par une fonction qui demande à l'utilisateur un nombre k et fait la suite suivante :
1+ 1/2 + 1/3 + 1/4 + ...+1/k.
Voilà mon programme, or le résultat obtenu est toujours 1...
#include <stdio.h>
#include <stdlib.h>
using namespace std;
double SerieHarmonique(double k);
int main(int argc, char *argv[])
{
int K = 0;
double resultat = 0;
printf("Ce programme aditionne un nombre K de termes selon la suite suivante :\n1+(1/2)+(1/3)+...+(1/K)\n\nEntrez un nombre K... ");
scanf("%d", &K);
resultat = SerieHarmonique(K);
printf("\nLe resultat de la suite en fonction de K = %d est %.1lf.\n\n", K, resultat);
system("PAUSE");
return EXIT_SUCCESS;
}
double SerieHarmonique(double k)
{
int Compteur = 1;
double Resultat = 0;
do{
Resultat += (1.0/Compteur);
Compteur++;
}while(Compteur != k);
return Resultat;
}
Merci d'avance.
A voir également:
- [Langage C]Comment faire...?
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
5 réponses
Oups au temps pour moi, l'erreur était là :
}while(Compteur <= k);
Encore désolé pour le dérangement !
}while(Compteur <= k);
Encore désolé pour le dérangement !
Bonjour,
Je ne suis pas une experte mais est-ce que le problème ne pourrait pas venir du fait que dans ta fonction SerieHarmonique, tu as mis : Resultat += (1.0/Compteur); et je me demande s'il ne reconnaît pas le "." comme un opérateur numérique et que du coup, il fait 1x0/Compteur.
Essaye d'enlever le ".0"
Je ne suis pas une experte mais est-ce que le problème ne pourrait pas venir du fait que dans ta fonction SerieHarmonique, tu as mis : Resultat += (1.0/Compteur); et je me demande s'il ne reconnaît pas le "." comme un opérateur numérique et que du coup, il fait 1x0/Compteur.
Essaye d'enlever le ".0"
Non, d'ailleurs parfois le 2.0 à la place du 2 par exemple peut être extrêmement utile lorsqu'il s'agit de définir un calcul en float/double et non en int !
Merci d'avoir essayé de m'aider quand même :)
Merci d'avoir essayé de m'aider quand même :)
Oui, tout fonctionne en remplaçant dans les dernières lignes le
par
Du coup, voici le code exact :
}while(Compteur != k);
par
}while(Compteur <= k);
Du coup, voici le code exact :
#include <stdio.h> #include <stdlib.h> using namespace std; double SerieHarmonique(double k); int main(int argc, char *argv[]) { int K = 0; double resultat = 0; printf("Ce programme aditionne un nombre K de termes selon la suite suivante :\n1+(1/2)+(1/3)+...+(1/K)\n\nEntrez un nombre K... "); scanf("%d", &K); resultat = SerieHarmonique(K); printf("\nLe resultat de la suite en fonction de K = %d est %.1lf.\n\n", K, resultat); system("PAUSE"); return EXIT_SUCCESS; } double SerieHarmonique(double k) { int Compteur = 1; double Resultat = 0; do{ Resultat += (1.0/Compteur); Compteur++; }while(Compteur <= k); return Resultat; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, justement non.
Un int correspond aux entiers, soit 1, 2, 3, 4...
Un double (ou long) correspond aux réels, soit 1, 2, 3, 4... mais aussi 2.5, 6.98, 9.13131, etc...
Donc explication des deux double principaux :
- Le double pour définir la variable Resultat correspond au fait que logiquement, cette variable a toutes les chances d'être un réel, sauf si K = 1. Il faut donc un réel, parce que si on met un int et k =3, on va avoir ça :
1/1 + 1/2 + 1/3 = 1 + 0.5 + 0.3 = 1.8 en vrai... = mais 1 à l'écran ! (les int ne prennent pas en compte les virgules !)
- Le double de la fonction SerieHarmonique correspond au fait qu'une fonction doit toujours être du type de ce qu'elle retourne. Or, comme elle retourne la variable Resultat (et je viens d'expliquer au dessus pourquoi c'est un double), alors elle est de type double :)
Un int correspond aux entiers, soit 1, 2, 3, 4...
Un double (ou long) correspond aux réels, soit 1, 2, 3, 4... mais aussi 2.5, 6.98, 9.13131, etc...
Donc explication des deux double principaux :
- Le double pour définir la variable Resultat correspond au fait que logiquement, cette variable a toutes les chances d'être un réel, sauf si K = 1. Il faut donc un réel, parce que si on met un int et k =3, on va avoir ça :
1/1 + 1/2 + 1/3 = 1 + 0.5 + 0.3 = 1.8 en vrai... = mais 1 à l'écran ! (les int ne prennent pas en compte les virgules !)
- Le double de la fonction SerieHarmonique correspond au fait qu'une fonction doit toujours être du type de ce qu'elle retourne. Or, comme elle retourne la variable Resultat (et je viens d'expliquer au dessus pourquoi c'est un double), alors elle est de type double :)