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
    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
    27 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 094
    Billets dans le blog
    146
    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 très actif
    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 : 33
    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
    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 !

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 773
    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.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    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 827
    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 confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  7. #7
    Membre expérimenté

    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
    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