![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
![]() Groupe : Inscrit Messages : 76 Inscrit : 30-Sep-07 Lieu : Meudon, (Paris) Membre n° 1205 ![]() |
Bonjour,
je débute vraiment en programmation C++ donc je crée des petits programmes pour m'entraîner. Or j'essaye de calculer Pi a l'aide la méthode Monte Carlo (pour maîtriser les rand () ) et mon programme ne marche pas ... mais sans erreurs apparentes de compilation... CODE ##include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> #include <iomanip> using namespace std ; int main () { cout << "Simulation de Pi\n" ; cout << "Entrez un nombre etier de simulations a effectuer.\n" ; int N ; cin >> N ; double X ; double Y ; double R ; int M ; int S ; srand ( time (0) ) ; while ( S < N ) { X = 2 * rand () - 1 ; Y = 2 * rand () - 1 ; R = sqrt ( X*X + Y*Y ) ; if ( R <= 1 ) { M++ ; S++ ; } else { S++ ; } } cout << "Approximation de Pi: \n" << 4 * ( M/N ) << setprecision (5) ; return 0; } EDIT 1 : Dans le debugger ça donne ca : CODE [Session started at 2007-11-20 18:25:20 +0100.] Simulation de Pi Entrez un nombre etier de simulations a effectuer. 10 Approximation de Pi: -6.4226e+08 The Debugger has exited with status 0. Qu'est ce qui ne va pas? Et que me conseillez vous pour apprendre a maîtriser le C++? ( Livres , sites ET idées de projets etc... ) Ce message a été modifié par Darknight670 - 20 Nov 2007, 18:44. |
|
|
![]() |
![]()
Message
#2
|
|
![]() Groupe : Inscrit Messages : 76 Inscrit : 30-Sep-07 Lieu : Meudon, (Paris) Membre n° 1205 ![]() |
Désolé de vous embêter mais voila une autre de mes questions...
CODE int main ( int argc , char * argv[] ) Cette ligne de code permet de récupérer des arguments mais si j'exécute mon programme comme ça :CODE monprogg.app -10000 Comment faire pour récupérer l'argument 10000? car CODE int Truc = argv [1] ca ne peut pas marcher a cause des problèmes de conversions....
Ce message a été modifié par Darknight670 - 22 Nov 2007, 18:45. |
|
|
![]()
Message
#3
|
|
![]() Dr Mouse Groupe : Membre Messages : 2986 Inscrit : 19-May-06 Lieu : Béziers Membre n° 572 ![]() |
Comme tu l'indiques ici: int main ( int argc , char * argv[] ) les arguments sont des chaines de caracteres.
Si tu essayes cela: int Truc = argv [1] tu essaye de convertir directement une chaîne en un entier => message d'erreur. La chaine 12 est code en memoire par le code ascii du 1 (sur un octet : 31) puis le code ascii du 2 (sur un octet:32) puis un code ascii 00 Ce qui donne en hexa: 31 32 00 L'entier 12 est codé en memoire par 00 00 00 OC Comme tu peux le voir cela ne se ressemble pas il faut donc lancer une fonction pour faire la conversion: int n = atoi(argv[1]); @+ Ce message a été modifié par appleseed - 22 Nov 2007, 19:33. -------------------- Bb
|
|
|
![]() ![]() |
![]() |
Version bas débit | Nous sommes le : 6 Jul 2025 - 16:42 |