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 :

Retourner un résultat (débutant)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut Retourner un résultat (débutant)
    Bonjour, j'ai fais une petite routine qui permet de simuler 2 statistiques (enfin!). Et maintenant je cherche à calculer le coefficient de corrélation de Pearson. Pour cela j'ai repris ces lignes de codes :

    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
    30
    31
    32
     
    #include <math.h>
    #define TINY 1.0e-20
     
    void pearsn(float x[], float y[], unsigned long n, float *r, float *prob, float *z)
     
    {
        float betai(float a, float b, float x);
        float erfcc(float x);
        unsigned long j;
        float yt, xt, t, df;
        float syy=0.0, sxy=0.0, sxx=0.0, ay=0.0, ax=0.0;
     
    for (j=1;j<=n;j++)  {
        ax += x[j];
        ay += y[j];
        }
        ax /= n;
        ay /= n;
        for (j=1;j<=n;j++) {
            xt=x[j]-ax;
            yt=y[[j]-ay;
            sxx += xt*xt;
            syy += yt*yt;
            sxy += xt*yt;
        }
        *r=sxy/sqrt(sxx*syy);
        *z=0.5*log((1.0+(*r)+TINY)/(1.0-(*r)+TINY));
        df=n-2;
        t=(*r)*sqrt(df/((1.0-(*r)+TINY)*(1.0+(*r)+TINY)));
        *prob=betai(0.5*df, 0.5, df/(df+t*t));
    }
    En réalité mon problème est que je ne vois pas comment retourner le résultat de "*r" pour le reprendre plus loin dans mon programme, tout simplement . . .

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mycaweb Voir le message
    En réalité mon problème est que je ne vois pas comment retourner le résultat de "*r" pour le reprendre plus loin dans mon programme, tout simplement . . .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    float x[100], y[100], r, prob, z ;
    unsigned long n ;
    ..
    pearsn( x, y, n, &r, &prob, &z);

  3. #3
    Membre averti
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    Mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 46
    Par défaut
    Même si je ne comprend pas ce que calcule ton code parce que les maths et moi, ça fait 3, je pense qu'un simple
    qui retourne l'adresse de r (r étant un pointeur passé en paramètres de ta fonction) ou alors
    qui retourne la valeur qui se trouve à l'adresse r. (vu ce que tu demandes, c'est plutôt cette ligne d'ailleurs)

    Seulement, si j'ai bien vu ton code, ni r, ni *r n'est modifié dans ta fonction, me trompe-je ?

    (où alors j'ai rien compris à ta question)

    edit: d'ailleurs j'ai pas compris la même chose que souviron34

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par gwenBZH Voir le message
    je pense qu'un simple
    qui retourne l'adresse de r (r étant un pointeur passé en paramètres de ta fonction)
    Puisque r est passé en paramètre, il ressort (on a passé son adresse)
    Il est inutile, voire dangereux à très dangreux, d'en plus le retourner..

    Citation Envoyé par gwenBZH Voir le message
    Seulement, si j'ai bien vu ton code, ni r, ni *r n'est modifié dans ta fonction, me trompe-je ?
    t'as mal regardé


  5. #5
    Membre averti
    Profil pro
    Développeur C#, Python, dans la carte à puce
    Inscrit en
    Mars 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C#, Python, dans la carte à puce
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 46
    Par défaut
    [QUOTE=souviron34;4271520]
    Il est inutile, voire dangereux à très dangreux, d'en plus le retourner..
    [QUOTE]

    Oui, dans ce cas là, évidemment c'est inutile.

    Citation Envoyé par souviron34 Voir le message
    t'as mal regardé

    Arf, désolé . Et pourtant j'ai relu le code 3 fois pour voir où il était modifié.

    *essuie ses lunettes, son écran et ouvre les yeux*

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    souviron34 :
    Il est inutile, voire dangereux à très dangreux, d'en plus le retourner..
    Inutile, soit, ça fait double emploi ! Mais dangereux, pourquoi ?

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void pearsn(float x[], float y[], unsigned long n, float *r, float *prob, float *z)
    {
        float betai(float a, float b, float x);
        float erfcc(float x);
     
    /* ... */
    }
    Il ne faut pas déclarer des fonctions dans une définition de fonction.

Discussions similaires

  1. Requetes retournent des résultats incomplets
    Par wylls dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/03/2007, 13h31
  2. [Mysql5] Fonction retournant le résultat d'un Select
    Par Baptiste Wicht dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 27/02/2007, 12h02
  3. Réponses: 1
    Dernier message: 08/04/2006, 11h41
  4. Savoir si une requête retourne un résultat ou pas
    Par zut94 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/09/2005, 15h48
  5. Une fonction peut-elle retourner plusieurs résultats ?
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2005, 22h18

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