Bienvenue invité ( Connexion | Inscription )

> [Aide] Programme C++ [Aide]
Darknight670
posté 20 Nov 2007, 18:24
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.
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
Darknight670
posté 22 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.
Go to the top of the page
 
+Quote Post
Acid
posté 22 Nov 2007, 19:27
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
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 6 Jul 2025 - 16:42