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

  FORUM HardWare.fr
  Programmation
  C++

  problème dans un prog

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème dans un prog

n°868548
toutsec
Posté le 08-10-2004 à 21:23:28  profilanswer
 

bonjour, jai besoin de votre aide... on a fait un programme ce matin en td de c++ et j'essai de le faire fonctionner :)

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. double CalculPi(int nMax)
  5. {
  6.     int nmax=0;
  7.     double pi=0;
  8.     int k=1;
  9.    
  10.     for (int n=0;n<=nMax;n++)
  11.     {
  12.         pi+= + k/(double(2*n+1));
  13.         k=-k;
  14.     }
  15.     pi *=4;
  16.     return pi;
  17. }
  18. double CalculPi(double epsilon)
  19. {
  20.     double pi=0;
  21.     double k=1;
  22.     int n=0;
  23.    
  24.     while(4/(double(2*n+1))>epsilon)
  25.     {
  26.         pi+=4*(k/(2*n+1));
  27.         k=-k;
  28.         n++;
  29.     }
  30.     return pi;
  31. }
  32. int menu()
  33. {
  34.   int choix;
  35.   do{
  36.       cout<<"1->Calculer Pi en donnant Nmax"<<endl;
  37.       cout<<"2->Calculer Pi en donnant Epsilon"<<endl;
  38.       cout<<"3->Quitter le programmme"<<endl;
  39.       cout<<"Votre choix :";
  40.       cin>>choix;
  41.   }while(choix<1||choix>3);
  42.   return choix;
  43. }
  44. int main()
  45. {
  46.     int c;
  47.     int nMax;
  48.     double epsilon;
  49.     do{
  50.         c=menu();
  51.         if(c==1)
  52.         {
  53.             do{
  54.                 cout<<"Entrer nMax :";
  55.                 cin>>nMax;
  56.             }while(nMax<2);
  57.             cout<<"Pi="<<CalculPi(nMax)<<endl;
  58.         }
  59.         if(c==2)
  60.         {
  61.             do{
  62.                 cout<<"Entrer un Epsilon :";
  63.                 cin>>epsilon;
  64.             }while(epsilon<=0);
  65.             cout<<"Pi="<<CalculPi(epsilon)<<endl;
  66.           }while(c!=3);
  67.  
  68.   system("PAUSE" );
  69.   return 0;
  70. }


il me dit qu'il y a une erreur dans la fonction main. une erreur de syntaxe à la fin de input... :??:  
je seche ...

mood
Publicité
Posté le 08-10-2004 à 21:23:28  profilanswer
 

n°868553
Taz
bisounours-codeur
Posté le 08-10-2004 à 21:27:15  profilanswer
 

cout<<"Entrer un Epsilon :" << flush
 
 
<cstdlib>
 
 
et t'as oublié de fermer ton if

n°868555
toutsec
Posté le 08-10-2004 à 21:31:53  profilanswer
 

lequel de if?
parce que j'ai essayé de fermer les if dans main, mais ça ne marche pas mieux...
 
et c'est quoi flush après un cout?
 
merci de l'aide :jap:


Message édité par toutsec le 08-10-2004 à 21:32:53
n°868557
Taz
bisounours-codeur
Posté le 08-10-2004 à 21:32:57  profilanswer
 

le dernier :o

n°868559
toutsec
Posté le 08-10-2004 à 21:34:33  profilanswer
 

exact, ça marche :)
merci beaucoup :)

n°868561
toutsec
Posté le 08-10-2004 à 21:36:33  profilanswer
 

alors, autre problème...
quand je mets un chiffre tres grand pour nMax, il plante, et pareil quand je mets un chiffre tres petit dans epsilon...
:??:

n°868563
Taz
bisounours-codeur
Posté le 08-10-2004 à 21:40:39  profilanswer
 

si nmax est INT_MAX tu as une boucle infinie

n°868575
toutsec
Posté le 08-10-2004 à 21:48:06  profilanswer
 

j'ai pas compris... ce que tu voulais dire par ça :P

n°868583
Taz
bisounours-codeur
Posté le 08-10-2004 à 21:54:14  profilanswer
 

si nmax est égal au plus grand entier possible, par définition, il n'existe aucun entier tel que  
 
x <= nmax est évalué à faux

n°868599
toutsec
Posté le 08-10-2004 à 22:11:19  profilanswer
 

oui, mais c'est quoi la limite de nmax?

mood
Publicité
Posté le 08-10-2004 à 22:11:19  profilanswer
 

n°868605
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2004 à 22:15:41  profilanswer
 

ben c'est INT_MAX


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°868626
toutsec
Posté le 08-10-2004 à 22:31:51  profilanswer
 

ce qui correspond à un chiffre genre 1*10^5 ?

n°868630
cris56
Posté le 08-10-2004 à 22:35:24  profilanswer
 

ca correspond à INT_MAX

n°868644
toutsec
Posté le 08-10-2004 à 22:49:39  profilanswer
 

cool

n°868648
cris56
Posté le 08-10-2004 à 22:52:38  profilanswer
 

la macros est definie dans limits.h

n°868697
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2004 à 23:21:03  profilanswer
 

Citation :

ce qui correspond à un chiffre genre 1*10^5 ?


Ca correspond à la valeur maximale que peut prendre un nombre de type INT, dans la mesure ou le type int n'est pas standard (il peut varier en fonction du compilateur ou de la plateforme), ben il n'y a pas de valeur fixe à INT_MAX (contrairement aux types char, short, long (et llong?) qui, si je ne m'abuse, sont définis et standardisés sur toutes les implémentations


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°868701
Taz
bisounours-codeur
Posté le 08-10-2004 à 23:25:12  profilanswer
 

non, pour tous il n'y a pas de limites. Justes des contraintes  de minimum et une relation d'ordre

n°868714
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2004 à 23:32:22  profilanswer
 

Taz a écrit :

non, pour tous il n'y a pas de limites. Justes des contraintes  de minimum et une relation d'ordre


arf :pfff:  
je pensais que char short long llong étaient fixés à 1 2 4 8 octets :/


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°868716
Taz
bisounours-codeur
Posté le 08-10-2004 à 23:33:28  profilanswer
 

surtout pas !

n°868717
cris56
Posté le 08-10-2004 à 23:34:16  profilanswer
 

ben non on en a parlé recemment
 
char est la plus petite entité adressable, donc sur certains systemes ca peut etre autres chose que 8 bits

n°868728
Taz
bisounours-codeur
Posté le 08-10-2004 à 23:38:23  profilanswer
 

exemplde contrainte : un signed char doit pouvoir représenter l'inverval [-127; 127]

n°868739
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2004 à 23:45:38  profilanswer
 

cris56 a écrit :

ben non on en a parlé recemment
 
char est la plus petite entité adressable, donc sur certains systemes ca peut etre autres chose que 8 bits


j'ai du rater celui là, link?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°868740
cris56
Posté le 08-10-2004 à 23:47:15  profilanswer
 
n°868747
Lam's
Profil: bas.
Posté le 08-10-2004 à 23:53:06  profilanswer
 

Taz a écrit :

exemplde contrainte : un signed char doit pouvoir représenter l'inverval [-127; 127]


 
-128. C'est du complément à 2.

n°868756
Taz
bisounours-codeur
Posté le 09-10-2004 à 00:01:25  profilanswer
 

Lam's a écrit :

-128. C'est du complément à 2.

toi je t'attendais ... non. D'ailleurs si t'avais un peu de culture C, tu saurais que la philosophie du C c'est d'imposer le moins possible de contrainte d'implémentation.

n°868767
masklinn
í dag viðrar vel til loftárása
Posté le 09-10-2004 à 00:10:07  profilanswer
 


Arf je suis arrivé dessus au 3e ou au 4e post et j'y suis jamais retourné, j'aurais du continuer à le consulter :pfff:


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°870666
toutsec
Posté le 11-10-2004 à 21:11:20  profilanswer
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. int main(int argc, char *argv[])
  5. {
  6.   int n=1;
  7.   float P=1;
  8.   float S=1;
  9.   float eps;
  10.   cout<<"Epsilon?";
  11.   cin>>eps;
  12.   while(2*S>eps)
  13.   {
  14.       S*=n*(1/(2*n+1));
  15.       P=S+P;
  16.       n++;
  17.   }
  18.   P=2*P;
  19.   cout<<"valeur : "<<P<<endl;
  20.   system("PAUSE" );
  21.   return 0;
  22. }


jai fait un nouveau prog, mais là, je ne comprends pas...
à la fin de l'éxécution, il me sort toujours 2.
quand j'enlève l'affectation de P, il me sort un chiffre en 10^-39...
jai essayé pas mal de trucs, mais là, je ne comprends pas :(

n°870679
Taz
bisounours-codeur
Posté le 11-10-2004 à 21:20:33  profilanswer
 

#  cout<<"Epsilon?";
#   cin>>eps;
 
 
->  
 
#  cout<<"Epsilon?" << flush;
#   cin>>eps;

n°870681
toutsec
Posté le 11-10-2004 à 21:21:40  profilanswer
 

ok je vais essayer, mais, quelle est la fonction de flush?

n°870682
Lam's
Profil: bas.
Posté le 11-10-2004 à 21:21:41  profilanswer
 

Je suis pas sûr, mais il me semble bien que (1/2*n+1), ça vaut 0+1==1. Il faudrait que tu caste l'un de ces opérandes en float, où que n sois du type float, sinon le compilateur effectue l'opération en arithmétique entière.

n°870684
toutsec
Posté le 11-10-2004 à 21:23:15  profilanswer
 

et ça change pas grand chose...
 
je pense que le soucis viens des affectations de P et S... mais jai essayé pas mal de choses, et ça ne change rien... :(

n°870685
Taz
bisounours-codeur
Posté le 11-10-2004 à 21:23:18  profilanswer
 

toutsec a écrit :

ok je vais essayer, mais, quelle est la fonction de flush?

elle t'assure que ton invite est affiché AVANT la saisie :)

n°870688
toutsec
Posté le 11-10-2004 à 21:24:47  profilanswer
 

Lam's a écrit :

Je suis pas sûr, mais il me semble bien que (1/2*n+1), ça vaut 0+1==1. Il faudrait que tu caste l'un de ces opérandes en float, où que n sois du type float, sinon le compilateur effectue l'opération en arithmétique entière.


exact c'est ça!
bravo :)
la prochaine fois, je ne mettrai que des types float comme ça, pas de soucis...
 
merci encore à toi!

n°870691
toutsec
Posté le 11-10-2004 à 21:25:55  profilanswer
 

Taz a écrit :

elle t'assure que ton invite est affiché AVANT la saisie :)


ok, merci  :jap:

n°870693
Taz
bisounours-codeur
Posté le 11-10-2004 à 21:26:25  profilanswer
 

juste écris tes constantes comme il faut.
 
0.0 // double
0.0f // float

n°903354
toutsec
Posté le 20-11-2004 à 11:41:03  profilanswer
 

salut à tous!
 
jai de nouveau un problème... :(  
sauf, que c'est un exercice qui risque de tomber à l'exam de mardi...
et jai beau chercher, je ne vois pas ou se situ l'erreur...
 
le code est ici, car  il est un peu long à quoter dans la réponse...
c'est pas une errreur de compilation, c'est une erreur quand j'execute le prog...
quand le prog affiche les résultats des "calculs" il me sort des résultats exotiques... avec des trucs allant à l'infini etc...
 
voila, j'ai surment codé comme mes pieds mais bon  :o  
merci pour votre aide :]


Message édité par toutsec le 20-11-2004 à 11:44:55
n°903364
el muchach​o
Comfortably Numb
Posté le 20-11-2004 à 12:08:32  profilanswer
 

Maintenant que tu codes un peu, il va te falloir apprendre à utiliser le deuxième outil du développeur : le débogueur.
Et ensuite le 3e outil sera le débogueur mémoire.

n°903365
chrisbk
-
Posté le 20-11-2004 à 12:09:45  profilanswer
 

et la cafetiere, c'est lequel d'outils ?

n°903371
toutsec
Posté le 20-11-2004 à 12:26:47  profilanswer
 

el muchacho a écrit :

Maintenant que tu codes un peu, il va te falloir apprendre à utiliser le deuxième outil du développeur : le débogueur.
Et ensuite le 3e outil sera le débogueur mémoire.


bah je veux bien apprendre à m'en servir si je savais ou c'est[:joce]
pi, à la fac, ils nous ont pas dit que ça existait...
(je vais chercher)

mood
Publicité
Posté le   profilanswer
 


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

  problème dans un prog

 

Sujets relatifs
Problème de requête SQL dans un prog. en VB[C] petit probleme sur un prog tout simple !!
[opengl]probleme : mon prog qui li dans un .ase n'affiche rien !probleme de prog . resolu tout seul je suis une tache . ;)
Pas vraiment de la prog pure mais probleme sous excel!!!![ Prog C ] Probleme avec les includes multiples...
Afficher un site web dans un prog visual basic -->Problème, SOS SVP :)Probleme avec prog access !!
Probleme prog en ligne de commande C++ / TelnetProblème OCX lorsque j'execute mon prog visual Basic...
Plus de sujets relatifs à : problème dans un prog


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