IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Programme avec random


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Programme avec random
    Salut svp qui peut me corriger ce programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main()
    {
        int i, n, N, X, Y;
        float PI;
        N=0;
        printf("Saisir le nombre de points souhaites");
        scanf("%d",&n);
     
        for (i=1; i<n; i++)
        {
            X = rand();
            Y = rand();
            if (pow(X,2)+pow(Y,2)<=1)
            {
                N = N+1;
            }
        }
     
        PI = 4*N/n;
        printf ("Avec ");
        scanf("%d",&n);
        printf (" points, la valeur estimée de PI vaut : ");
        scanf("%f",&PI);
        return 0;
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Première, lorsque vous présentez un problème, veuillez expliquer :
    • ce que vous voulez que votre programme fasse ;
    • ce qu'il fait réellement et pourquoi vous considérez cela comme une erreur ;
    • votre piste à propos des erreurs et vos hypothèses concernant la source de l'erreur (ou au minimum, les messages d'erreurs de votre programme).


    Maintenant, ne sachant pas quoi chercher, je vais vous dire une premier chose :
    • toutes variables déclarées devraient être initialisées (à sa déclaration).


    Cela évite beaucoup de problème. Ici, notamment avec 'n'.

    D'ailleurs un second conseil me vient :
    • donnez des noms clairs et concis pour vos variables.

    Pour moi 'N' et 'n', ça ne veut rien dire et surtout, cela ne m'indique pas le but de ces variables.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Avatar de Snack3r
    Homme Profil pro
    Doctorant à l'Université Cheikh Anta Diop de Dakar
    Inscrit en
    Octobre 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Doctorant à l'Université Cheikh Anta Diop de Dakar
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 118
    Points : 444
    Points
    444
    Par défaut
    Bonjour


    @LittleWhite
    +1

    @mezuu
    Bienvenue sur Forum du club des développeurs et IT Pro

    Si je ne me trompe pas :
    Tout d'abord, vous lisez un entier n depuis le clavier, puis vous cherchez d'une façon aléatoire, des points appartenant au cercle d'unité (la règle générale dit qu'un point de cordonnées (x,y) appartient à un cercle de rayon r, ssi x² + y² <= r²). Si on sort de la boucle for, la variable N va contenir le nombre de points valides.
    Mais ce que je n'ai pas bien compris : d'où vient cette règle :
    sachant que le nombre PI représente le rapport de la circonférence d’un cercle à son diamètre !
    C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie.

  4. #4
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 554
    Points
    1 554
    Par défaut
    Mais si je lis bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            X = rand();
            Y = rand();
            if (pow(X,2)+pow(Y,2)<=1)
            {
                N = N+1;
            }
    rand() renvoyant un integer entre 0 et RAND_MAX, il est plus que probable que N soit à zéro en sortie de boucle.
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par snack3r Voir le message
    Mais ce que je n'ai pas bien compris : d'où vient cette règle :
    sachant que le nombre PI représente le rapport de la circonférence d’un cercle à son diamètre !
    Bonjour
    Le nombre pi n'apparait pas que dans les rapports du cercle. On le retrouve aussi dans l'univers des probabilités http://www.pi314.net/fr/aleatoire.php. Je pense qu'il s'agit du code associé à l'un de ces phénomènes.
    En revanche, n'utiliser que des int dans une opération donnera un résultat en int. Ce résultat copié dans un float donnera alors un float avec sa partie décimale à 0...

    Citation Envoyé par edgarjacobs Voir le message
    Mais si je lis bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            X = rand();
            Y = rand();
            if (pow(X,2)+pow(Y,2)<=1)
            {
                N = N+1;
            }
    rand() renvoyant un integer entre 0 et RAND_MAX, il est plus que probable que N soit à zéro en sortie de boucle.
    Mouais. Il y a tout de même des chances que X et Y soient à 0 et/ou à 1 mais on comprend ce que tu veux dire...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour
    Le nombre pi n'apparait pas que dans les rapports du cercle. On le retrouve aussi dans l'univers des probabilités http://www.pi314.net/fr/aleatoire.php. Je pense qu'il s'agit du code associé à l'un de ces phénomènes.
    Je crois que le code essaye de calculer l'aire d'un quart de disque de rayon un par une méthode de Monte-Carlo, en générant des points uniformément répartis dans le carré circonscrit à ce quart de disque et en calculant la proportion de ces points qui sont dans le disque.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  7. #7
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    à la fin, peut être qu'au lieu de lire PI et n, tu devrai les afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main()
    {
        int i, n, N, X, Y;
        float PI;
        N=0;
        printf("Saisir le nombre de points souhaites");
        scanf("%d",&n);
     
        for (i=1; i<n; i++)
        {
            X = rand();
            Y = rand();
            if (pow(X,2)+pow(Y,2)<=1)
            {
                N = N+1;
            }
        }
     
        PI = 4*N/n;
        printf ("Avec %d",n);
        printf (" points, la valeur estimée de PI vaut : %f",PI);
        return 0;
    }

Discussions similaires

  1. Liens : Aide à la programmation avec DirectX
    Par djbed dans le forum DirectX
    Réponses: 11
    Dernier message: 22/03/2007, 23h30
  2. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45
  3. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19
  4. Réponses: 3
    Dernier message: 27/08/2003, 21h14
  5. Script assez difficile avec random
    Par LFC dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2003, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo