Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1431 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pi.exe a cessé de fonctionner - quel est le problème ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pi.exe a cessé de fonctionner - quel est le problème ?

n°1829794
Profil sup​primé
Posté le 20-12-2008 à 12:33:27  answer
 

Bonjour,  
je n'y connais pas grand-chose en c++, et je bute sur une erreur.
Mon tout petit programme, censé calculer pi selon une précision passée en paramètre, compile mais son exécution est stoppée dès l'appel de la fonction get_pi : pi.exe a cessé de fonctionner, etc...
 
Voici mon code :
 

Code :
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. float var;
  6.  
  7. float get_pi(int precision) {
  8.    float pi = 0;
  9.    float tmp = 0;
  10.  
  11.    for(int i = 0; i <= precision; i += 4) {
  12.        tmp += 1/(i*(i+2));
  13.    }
  14.  
  15.    pi = 8 * tmp;
  16.    return pi;
  17. }
  18.  
  19. float get_pi(int precision) ;
  20.  
  21. int main()
  22. {
  23.    cout << "salut" << get_pi(5);
  24.    return 0;
  25. }

mood
Publicité
Posté le 20-12-2008 à 12:33:27  profilanswer
 

n°1829797
gatsu35
Blablaté par Harko
Posté le 20-12-2008 à 12:53:18  profilanswer
 

meme dans n'importe quel langage on se rend compte tout de suite de ton erreur :  
 

Code :
  1. for(int i = 0; i <= precision; i += 4) {
  2.            tmp += 1/(i*(i+2));
  3.        }


Au tout départ, i=0;
et donc ton calcul :  
1/(i*(i+2))
est merdique :  
1/(0*2)
1/0
 
En math on nous a toujours appris que la division par 0 était impossible.
 
Tu devrais mieux lire les erreurs que te retourne le programme

n°1829827
Profil sup​primé
Posté le 20-12-2008 à 15:07:34  answer
 

Ok, je n'y pensais même pas.
Comment voir les messages retournés par le programme ? il n'affichait rien et se fermait immédiatement et le debugger est vide :(
J'ai du loupé quelque chose :(
Merci beaucoup en tout cas :)
D'ailleurs maintenant, le programme affiche zéro : (cout << get_pi(10000)

n°1829859
Profil sup​primé
Posté le 20-12-2008 à 17:51:32  answer
 

:bounce:

n°1830126
Profil sup​primé
Posté le 21-12-2008 à 19:17:12  answer
 

j'apporte des précisions : le programme retourne zéro.
J'ai testé différentes choses mais je ne trouve toujours pas.
On dirait que tmp vaut 0 à la sortie de for()
Voici le code :  
 

Code :
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. float var;
  6.  
  7. float get_pi(int precision) {
  8.    float pi = 0;
  9.    float tmp = 0;
  10.  
  11.    for(int i = 1; i <= precision; i += 4) {
  12.        tmp += 1/(i*(i+2));
  13.    }
  14.  
  15.    pi = 8 * tmp;
  16.    return pi;
  17. }
  18.  
  19. float get_pi(int precision) ;
  20.  
  21. int main()
  22. {
  23.    var = get_pi(100);
  24.    cout << var ;
  25.    return 0;
  26. }

n°1830139
SquiZZ
Posté le 21-12-2008 à 19:44:44  profilanswer
 


Il vaut aussi 0 pendant l'execution du for.
hint : quel est le type des deux opérandes dans ta division ? Donc quel est le type du résultat de la division ?


Message édité par SquiZZ le 21-12-2008 à 19:45:00
n°1830143
Profil sup​primé
Posté le 21-12-2008 à 19:53:28  answer
 

en fait, je dois obtenir :
 
1/(1*3), 1/(5*7), etc...
donc tmp = 1/(1*3) + 1(5*7) + 1/(9*11) etc.
 
Mais je ne sais pas quel est le type approprié :??:

n°1830152
SquiZZ
Posté le 21-12-2008 à 20:07:57  profilanswer
 

bon tu divises un entier par un entier, donc c'est une division entière, donc le résultat est un entier. Après tu le stockes dans un float mais c'est trop tard.
Hint² :

Code :
  1. 1./2


Message édité par SquiZZ le 21-12-2008 à 20:08:16
n°1830153
masklinn
í dag viðrar vel til loftárása
Posté le 21-12-2008 à 20:09:13  profilanswer
 

Tu vas avoir du mal à chopper des précisions arbitraires de pi dans du float, ou du double d'ailleurs :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1830156
SquiZZ
Posté le 21-12-2008 à 20:12:54  profilanswer
 

Attends, pour l'intant pi vaut zéro :o


Message édité par SquiZZ le 21-12-2008 à 20:13:06
mood
Publicité
Posté le 21-12-2008 à 20:12:54  profilanswer
 

n°1830164
gatsu35
Blablaté par Harko
Posté le 21-12-2008 à 20:24:42  profilanswer
 
n°1830524
Profil sup​primé
Posté le 22-12-2008 à 17:59:11  answer
 


 
c'est marant parce qu'avant de faire cette fonction, j'ai lu ces deux pages  [:tinostar]


Message édité par Profil supprimé le 22-12-2008 à 17:59:19

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pi.exe a cessé de fonctionner - quel est le problème ?

 

Sujets relatifs
programmation de GnomeCallerID gtk et c (gros probleme !)problème avec "this" sur un formulaire
Problème avec VBAproblème lightwindow, pourquoi ca plante..
Problème transfo XSL avec API Java 1.5 + SAX + XML avec namespacePHP Problème - Internet Explorer
MySQL - Probleme pour supprimer un champ sur Grosse DBProblème de décrémentation en javascript
probleme avec icones[Py2exe] Problème de compilation
Plus de sujets relatifs à : pi.exe a cessé de fonctionner - quel est le problème ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR