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 :

mon programme en c ne fonctionne pas correctement


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut mon programme en c ne fonctionne pas correctement
    bonjour tout le monde
    Aprés un travail intensif j'ai terminé mon prog mais il existe certains problèmes.le compilateur retourne inf et -inf pour quelques valeurs et nan pour d'autres.Franchement, je suis perdue, je n'arrive pas à connaitre la source d'erreur. SVP celui qui es interessé par le developpement m'envoie une réponse le plus vite possible.Merci d'avance.
    le programme est le suivant
    Code c : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    #include<stdio.h>
    #include<math.h>
    int main(int argc,char*argv[])
    {
    #define SLR 8
    #define RLR 2
    #define STMR 15
    #define Ds 3	
    #define Dr 3
    #define TELR 65
    #define WEPL 110
    #define T 200
    #define Bp 4.3
    #define Pp 0
    #define Nc -70
    #define Nfor -64
    #define Pr 35
    #define Ps 35
    #define A 0
    #define qdu 1
    float Ie,OLR,LSTR,Ta,Tr;
    double Nos;
    double Pre,Nor,No,Ro;
    int Nfo;
    double Id;
    double Xolr,Iolr,STMRo;
    double p,pp,ppp,pppp;
    double Ist;
    double Q;
    double G;
    double Y;
    double Z;
    double Iq; 
    double Is;
    double TERV;
    double Re,Roe,Idte;
    double Rle,Idle;
    double XX;
    double Idd;
    double e, ex;
    double Ie_eff;
    double R,MOS;
    printf("\n Entrez le coefficient Ie :");
    scanf("%f",&Ie);
    OLR=SLR+RLR;
    LSTR=STMR+Dr;
    Ta=T;
    Tr=2*T;
    printf("\n%f OLR ",OLR);
    printf("\n%f LSTR",LSTR);
    printf("\n%f Ta",Ta);
    printf("\n%f Tr",Tr);
    Nos= pow((Ps-SLR-Ds-100+0.004)*(Ps-OLR-Ds-14),2);
    printf("\n%lf Nos",Nos);
    Pre = Pr+10*log10(pow(11,(10-LSTR/10)));
    printf("\n%lf Pre",Pre);
    Nor=pow(RLR-121+Pre+0.008*(Pre-35),2);
    printf("\n%lf Nor",Nor);
    Nfo = Nfor+RLR;
    printf("\n%lf Nfo",Nfo);
    No=10*log10(pow(10,(Nc/10))+pow(10,(Nos/10))+pow(10,(Nfo/10)));
    printf("\n%lf No",No);
    Ro=15-1.5*(SLR+No);
    printf("\n%lf Ro",Ro);
    // Calcul du facteur Is
    Xolr = OLR+0.2*(64+No-RLR);
    p=pow((Xolr/10),8);
    Iolr = 20*((1+pow(p,0.125)-Xolr/8));
    STMRo = -10*log10(pow(10,(-STMR/10))+exp(-T/4)*pow(10,(-TELR/10)));
    pp=pow((STMRo-13)/6,8);
    ppp=pow((STMRo+1)/19.4,35);
    pppp=pow((STMRo-3)/33,13);
    Ist = 12*(1+pow(pp,(1/8)))-28*(1+pow(ppp,(1/35)))-13*(1+pow(pppp,(1/13))+29);
     Q = 37-15*log10(qdu);
     
     G = 1.07+0.258*Q+0.0602*pow(Q,2);
     
     Y = (Ro-100)/15+46/8.4-G/9;
     
     Z = 46/30-G/40;
     
     Iq = 15*log10(pow(11,Y)+pow(10,Z));
     
     
    Is = Iolr+Ist+Iq;
    printf("\n%lf le coefficient Is est egal a :",Is);
     
    // Calcul du facteur Id
    TERV = TELR-40*log10((1+T/10)/(1+T/150))+6*exp(pow(-0.3*T,2));
     
    if  (STMR<9)
    {
    TERV = TERV+0.5*Ist;
     
    Re = 80+2.5*(TERV-14);
     
    Roe = -1.5*(No-RLR);
     
    Idte = ((Roe-Re)/2+sqrt(pow((Roe-Re),2/4+100))-1)*(1-exp(-T));
     
     
    }
     
    if (STMR>20)
     
    {
    Idte = sqrt(pow(Idte,2)+pow(Ist,2));
     
     
    Rle = 10.5*(WEPL+7)*pow((Tr+1),(-0.25));
     
    Idle = (Ro-Rle)/2+sqrt(pow((Ro-Rle),2)/4+169);
    }
    if(Ta<=100)
     
    {
     
    Idd=0;
     
    }
     
    else if(Ta>100)
     
    {
     
    XX=log10(Ta/100)/log10(2);
     
    e=pow(1+XX,6);
     
    ex=pow((XX/3),6);
     
    Idd= 25*(pow(e,(1/6))-3*(1+pow(ex,(1/6))+2));
     
    Id = Idte+Idle+Idd;
     
    printf("\nle coefficient Id est égal à :\n",Id);
     
    }
     
    Ie_eff = Ie+(95-Ie)*(Pp/5)/((Pp/5)+Bp);
     
     
    // Calcul du facteur R
     
     
    R = Ro-Is-Id-Ie_eff+A;
     
    printf ("\n%lf la valeur du facteur R est egale a :",R);
     
     
    // Conversion du facteur R en Score Mos
     
     
    MOS = (1+0.035)*R+R*(R-60)*(100-R)*0.000007;
     
    if(R<0)
     
    {
     
    MOS=1;
     
    printf("\n%lf le score Mos",MOS);
     
    }
     
    else if(R>100)
     
    {
     
    MOS=4.5;
     
    printf("\n%lf le score Mos",MOS);
     
    }
    }
    Remarque:les erreurs sont apparues à partir du calcul de No.

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Je trouve ce code horriblement illisible.

    Essayes d'abord de corriger ceci :
    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
    Project   : Console application
    Compiler  : GNU GCC Compiler (called directly)
    Directory : F:\Temporaire\CodeBlocksProject\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:60: warning: double format, different type arg (arg 2)
    main.c:136: warning: too many arguments for format
    main.c: At top level:
    main.c:3: warning: unused parameter 'argc'
    main.c:3: warning: unused parameter 'argv'
    main.c: In function `main':
    main.c:175: warning: control reaches end of non-void function
    main.c:36: warning: 'Idte' might be used uninitialized in this function
    main.c:37: warning: 'Idle' might be used uninitialized in this function
    Linking console executable: F:\Temporaire\CodeBlocksProject\console.exe
    Process terminated with status 0 (0 minutes, 4 seconds)
    0 errors, 7 warnings
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Moi j'en ai d'autres des erreurs et warnings:
    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
    :: === App, Debug ===
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:54: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:56: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:58: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:60: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:60: warning: format ‘%lf’ expects type ‘double’, but argument 2 has type ‘int’
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:62: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:64: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:65: error: expected expression before ‘/’ token
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:86: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:88: error: expected expression before ‘/’ token
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:136: warning: too many arguments for format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:143: error: expected expression before ‘/’ token
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:148: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:151: error: expected expression before ‘/’ token
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:162: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:172: warning: ISO C90 does not support the ‘%lf’ printf format
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:175: warning: control reaches end of non-void function
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:3: warning: unused parameter ‘argc’
    /home/franhec/Documents/Programmation/CodesTests/ANSI/App/main.c:3: warning: unused parameter ‘argv’
    :: === Build finished: 4 errors, 15 warnings ===
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Points : 284
    Points
    284
    Par défaut
    C'est du grand n'importe quoi ce code. Des noms de varaibles illisibles, des calculs incompréhensibles, tout ça pour un score qui vaut soit 1 soit 4.5...

  5. #5
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Un candidat à l'IOCCC?

  6. #6
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    oui je crois

    je m'étais même pas donné la peine d'essayer de lire.. Après la 3ième ligne de calcul (en ayant péniblement passé les déclarations), j'ai déclaré forfait...

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 69
    Points
    69
    Par défaut
    Bon je me lance alors. NAN est la valeur retourné par un flottant lorsque les bits de la variable considérée comme de type flottant ne correspond pas à un type flottant. Par exemple si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dword* pDwExemple;
    float* pFlExemple;
    pDwExemple= new dword;
    *pDwExemple=0xFFFFFFFF;
    pFlExemple = (float*)pDwExemple
    printf("%f",*pFlExemple);
    inf et -inf sont supportés par certain compilos. c'est infini et -infini

  8. #8
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par DaffyDuck
    Bon je me lance alors. NAN est la valeur retourné par un flottant lorsque les bits de la variable considérée comme de type flottant ne correspond pas à un type flottant. Par exemple si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dword* pDwExemple;
    float* pFlExemple;
    pDwExemple= new dword;
    *pDwExemple=0xFFFFFFFF;
    pFlExemple = (float*)pDwExemple
    printf("%f",*pFlExemple);
    inf et -inf sont supportés par certain compilos. c'est infini et -infini
    Attention, ce n'est pas du C.....
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut mon programme en c ne fonctionne pas correctement
    bonjour
    Bon, il s'agit d'un programme qui permet de donner une estimation de la qualité de service sous forme d'une note(MOS) et cela en fonction de délai (T) et codec utilisé(Ie) et de taux de pertes.
    pour moi, lorsque je compile avec gcc -lm -o Model Model.c rien ne s'affiche , il passe à l'exécution directement.bon, il affiche la valeur de OLR,LSTR,Ta, Tr,Nos,Pre,Nor et Nfo correctement mais à partir du No il retourne inf et -inf pour Ro et nan pour R et nan pour MOS.
    Remarque :R=Ro-Is-Id-Ie_eff+A : Equation de base de programme puis elle vient la conversion du facteur R trouvé en score Mos qui vaut 1 ou 4.5.
    SVP aidez moi je suis totalement perdue SVP SVP.Merci

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Au minimum, si tu veux compiler correctement et que ton compilateur cause un minimum avec toi utilise ces options de compilation:
    Si maintenant tu n'utilises que la libc standard, tu peux même ajouter l'option:
    Il s'agit là vraiment du minimum, on peut pousser le vice plus loin: http://emmanuel-delahaye.developpez....tm#cfg_compilo
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par faten22
    bonjour
    Bon, il s'agit d'un programme qui permet de donner une estimation de la qualité de service sous forme d'une note(MOS) et cela en fonction de délai (T) et codec utilisé(Ie) et de taux de pertes.
    pour moi, lorsque je compile avec gcc -lm -o Model Model.c rien ne s'affiche , il passe à l'exécution directement.bon, il affiche la valeur de OLR,LSTR,Ta, Tr,Nos,Pre,Nor et Nfo correctement mais à partir du No il retourne inf et -inf pour Ro et nan pour R et nan pour MOS.
    Remarque :R=Ro-Is-Id-Ie_eff+A : Equation de base de programme puis elle vient la conversion du facteur R trouvé en score Mos qui vaut 1 ou 4.5.
    SVP aidez moi je suis totalement perdue SVP SVP.Merci
    ça n'empêche pas de programmer correctement, de mettre des commentaires, de mettre des lignes blanches, bref d'améliorer la lisibilité... Imagine que tu aies à reprendre ça dans 3 ou 4 ans....

    Désolé, mais je ne regarderais pas attentivement, vu que je m'y perd...

    Et pour savoir vraiment où ça plante, fait un fprintf (stderr, et non pas un printf... Car là j'ai pas l'impression que c'est là où tu nous dis...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tant que ton code sera aussi pourri (présentation déplorable, variables de trois caractères, tout le code dans le main()), personne ici ne pourra t'aider.
    Ni ne voudra s'en donner la peine à moins d'être payé pour le faire.

    Edit: J'en profite pour mettre les warnings de Visual :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    d:\...\crade.c(93) : warning C4127: conditional expression is constant
    d:\...\crade.c(106) : warning C4127: conditional expression is constant
    d:\...\crade.c(5) : warning C4100: 'argv' : unreferenced formal parameter
    d:\...\crade.c(5) : warning C4100: 'argc' : unreferenced formal parameter
    d:\...\crade.c(136) : warning C4700: uninitialized local variable 'Idte' used
    d:\...\crade.c(136) : warning C4700: uninitialized local variable 'Idle' used
    d:\...\crade.c(148) : warning C4701: potentially uninitialized local variable 'Id' used
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    J'ai réindenté le code en question, (remplacé aussi les commentaires unilignes par des blocs), et ajouté un return 0, mais c'est toujours aussi pourri pour le reste :
    Code C : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    #include<stdio.h>
    #include<math.h>
     
    #define SLR 8
    #define RLR 2
    #define STMR 15
    #define Ds 3	
    #define Dr 3
    #define TELR 65
    #define WEPL 110
    #define T 200
    #define Bp 4.3
    #define Pp 0
    #define Nc -70
    #define Nfor -64
    #define Pr 35
    #define Ps 35
    #define A 0
    #define qdu 1
     
    int main(void)
    {
    	float Ie,OLR,LSTR,Ta,Tr;
    	double Nos;
    	double Pre,Nor,No,Ro;
    	int Nfo;
    	double Id;
    	double Xolr,Iolr,STMRo;
    	double p,pp,ppp,pppp;
    	double Ist;
    	double Q;
    	double G;
    	double Y;
    	double Z;
    	double Iq; 
    	double Is;
    	double TERV;
    	double Re,Roe,Idte;
    	double Rle,Idle;
    	double XX;
    	double Idd;
    	double e, ex;
    	double Ie_eff;
    	double R,MOS;
     
    	printf("\n Entrez le coefficient Ie :");
    	scanf("%f",&Ie);
     
    	/* Med : On dirait que Ie n'est même pas nécessaire pour ces calculs */
    	OLR = SLR+RLR;
    	LSTR = STMR+Dr;
    	Ta = T;
    	Tr = 2*T;
    	printf("\n%f OLR ",OLR);
    	printf("\n%f LSTR",LSTR);
    	printf("\n%f Ta",Ta);
    	printf("\n%f Tr",Tr);
     
    	Nos = pow((Ps-SLR-Ds-100+0.004)*(Ps-OLR-Ds-14),2);
    	printf("\n%lf Nos",Nos);
    	Pre = Pr+10*log10(pow(11,(10-LSTR/10)));
    	printf("\n%lf Pre",Pre);
    	Nor = pow(RLR-121+Pre+0.008*(Pre-35),2);
    	printf("\n%lf Nor",Nor);
    	Nfo = Nfor+RLR;
    	printf("\n%lf Nfo",Nfo);
    	No = 10*log10(pow(10,(Nc/10))+pow(10,(Nos/10))+pow(10,(Nfo/10)));
    	printf("\n%lf No",No);
    	Ro = 15-1.5*(SLR+No);
    	printf("\n%lf Ro",Ro);
    	/* Calcul du facteur Is */
    	Xolr = OLR+0.2*(64+No-RLR);
    	p=pow((Xolr/10),8);
    	Iolr = 20*((1+pow(p,0.125)-Xolr/8));
    	STMRo = -10*log10(pow(10,(-STMR/10))+exp(-T/4)*pow(10,(-TELR/10)));
    	pp=pow((STMRo-13)/6,8);
    	ppp=pow((STMRo+1)/19.4,35);
    	pppp=pow((STMRo-3)/33,13);
    	Ist = 12*(1+pow(pp,(1/8)))-28*(1+pow(ppp,(1/35)))-13*(1+pow(pppp,(1/13))+29);
    	Q = 37-15*log10(qdu);
     
    	G = 1.07+0.258*Q+0.0602*pow(Q,2);
     
    	Y = (Ro-100)/15+46/8.4-G/9;
     
    	Z = 46/30-G/40;
     
    	Iq = 15*log10(pow(11,Y)+pow(10,Z));
     
     
    	Is = Iolr+Ist+Iq;
    	printf("\n%lf le coefficient Is est egal a :",Is);
     
    	/* Calcul du facteur Id */
    	TERV = TELR-40*log10((1+T/10)/(1+T/150))+6*exp(pow(-0.3*T,2));
     
    	if(STMR<9)
    	{
    		TERV = TERV+0.5*Ist;
    		Re = 80+2.5*(TERV-14);
    		Roe = -1.5*(No-RLR);
    		Idte = ((Roe-Re)/2+sqrt(pow((Roe-Re),2/4+100))-1)*(1-exp(-T));
    	}
     
    	if(STMR>20)
    	{
    		Idte = sqrt(pow(Idte,2)+pow(Ist,2));
    		Rle = 10.5*(WEPL+7)*pow((Tr+1),(-0.25));
    		Idle = (Ro-Rle)/2+sqrt(pow((Ro-Rle),2)/4+169);
    	}
    	if(Ta<=100)
    	{
    		Idd=0;
    	}
    	else if(Ta>100)
    	{
    		XX=log10(Ta/100)/log10(2);
    		e=pow(1+XX,6);
    		ex=pow((XX/3),6);
    		Idd= 25*(pow(e,(1/6))-3*(1+pow(ex,(1/6))+2));
    		Id = Idte+Idle+Idd;
    		printf("\nle coefficient Id est égal à :\n",Id);
    	}
     
    	/* Med : En fait, c'est seulement ici que Ie commence à être utilisé */ 
    	Ie_eff = Ie+(95-Ie)*(Pp/5)/((Pp/5)+Bp);
     
    	/* Calcul du facteur R */
    	R = Ro-Is-Id-Ie_eff+A;
    	printf ("\n%lf la valeur du facteur R est egale a :",R);
     
    	/* Conversion du facteur R en Score Mos */
    	MOS = (1+0.035)*R+R*(R-60)*(100-R)*0.000007;
    	if(R<0)
    	{
    		MOS=1;
    		printf("\n%lf le score Mos",MOS);
    	}
    	else if(R>100)
    	{
    		MOS=4.5;
    		printf("\n%lf le score Mos",MOS);
    	}
    	return 0;
    }
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    d:\...\crade.c(98) : warning C4127: conditional expression is constant
    d:\...\crade.c(106) : warning C4127: conditional expression is constant
    d:\...\crade.c(122) : warning C4700: uninitialized local variable 'Idte' used
    d:\...\crade.c(122) : warning C4700: uninitialized local variable 'Idle' used
    d:\...\crade.c(130) : warning C4701: potentially uninitialized local variable 'Id' used

    PS: Normalement, pour un printf(), les \n sont en fin de ligne, pas au début...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Points : 284
    Points
    284
    Par défaut
    Citation Envoyé par DaffyDuck
    Bon je me lance alors. NAN est la valeur retourné par un flottant lorsque les bits de la variable considérée comme de type flottant ne correspond pas à un type flottant. Par exemple si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dword* pDwExemple;
    float* pFlExemple;
    pDwExemple= new dword;
    *pDwExemple=0xFFFFFFFF;
    pFlExemple = (float*)pDwExemple
    printf("%f",*pFlExemple);
    inf et -inf sont supportés par certain compilos. c'est infini et -infini
    Pas exactement. La noprme IEEEn permet le codage de +/-infini, et de NaN. NaN est retourné en cas de résultat indeterminé, comme 0/0, Inf-Inf, sqrt(-1), ...
    Après, 0xFFFFFFFF est effectivement un des codage possibles pour NaN.

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut mon programme en c ne fonctionne pas correctement
    salut, tout le monde
    je n'arrive pas encore à trouver la solution pour l'erreur. SVP est ce que vous pouvez expliquer mieux et avec clareté pour que je puisse corriger car je suis une débutante en programmation et je ne comprend pas bien les choses surtout l'incomptabilité des types des variables. SVP , je vous emprie trouvez moi une solution parceque je suis entrain de préparer un projet.je vous remercie et je suis désolée pour le dérangement.

  16. #16
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par faten22
    ..... SVP est ce que vous pouvez expliquer mieux et avec clareté pour que je puisse corriger car je suis une débutante en programmation et je ne comprend pas bien les choses surtout l'incomptabilité des types des variables.
    elle est bien bonne celle-là....

    Ben pour qu'on te l'explique plus clairement, faudrait d'abord que ton code soit...... plus clair ....

    Ré-écrit le proprement, en mettant des lignes blanches, des commentaires après les variables, du formattage quoi...

    Là on pourra peut-être s'y retrouver un peu (et certainement toi aussi).

    Je répète que pour vérifier où ça plante réellement, il te faut mettre des "fprintf(stderr, ...)" parce que l'écriture est synchrone, contrairement au printf, qui écrit quand il peut, mais pas forcément au moment ou tu appelles l'instruction.

    Donc, je dirais que la marche à suivre est :

    • 1) met ton code propre.
      ça te permettra d evérifier que tes opérations sont correctes
    • 2) après CHAQUE ligne de calcul, imprime les varaibles et le résultat avec fprintf(stderr, ..).
    • 3) vérifies les chiffres donnés avec une calculatrice...
    • 4) tu vas bien voir, comme ça, là où ça plante et POURQUOI.
    • 5) là, tu pourras nous demander de l'aide....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  17. #17
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Ou apprend à utiliser un debugger ,)

  18. #18
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ouais mais le PO plante au maximum à la 5ième ligne, alors ça doit être moins compliqué de mettre des fprintf 5 fois..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  19. #19
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Lab,
    Citation Envoyé par Gruik
    Ou apprend à utiliser un debugger ,)
    Ce qui n'empêche pas de commencer par écrire un code propre
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [XL-2007] Mon code ne fonctionne pas correctement
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2014, 11h40
  2. Programme ne fonctionne pas correctement
    Par crucified_barbara dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 08/06/2010, 10h41
  3. Réponses: 7
    Dernier message: 23/08/2008, 11h34
  4. Réponses: 0
    Dernier message: 10/04/2008, 00h45
  5. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27

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