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 :

problème avec fabs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut problème avec fabs
    bonjour, j'aimerais savoir d'où vient l'erreur dans mon expression fabs:

    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
    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
    //06/05/08 15:44
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    double H; 
    int N;
    int i;
    float T, Ti, TT;
    float Tmoyi, Tmoy;
    float T_trait;
    float somme;
    float dix_minutes();
    double absolu;
     
     
    FILE* fichier1 = NULL;
    FILE* fichier2 = NULL;
    float dix_minutes()
    {
    FILE* fichier1 = NULL;
    FILE* fichier2 = NULL;
    /*fichier1 = fopen("program final.txt", "w"); // lecture du fichier texte*/  
    fichier1 = fopen("program final.txt", "r");
    fichier2 = fopen("program final bis.txt", "a"); // création du fichier texte
    for (N=1; N!=21; N++)
        {
        //fscanf(FILE* fichier1, "%f\n", &T); 
        //fichier1 = fopen("program final.txt", "w");
        //printf("\nTapez la valeur T: "); // fenetre DOS pour les températures
        fscanf(fichier1, "%f\n", &T);
        //scanf("%f",&T);
        Ti = Ti + T;
        //Ti = T;
        //TT= Ti + T;
        //printf("Ti = %f\n", Ti);
        H = 0.00694444*i; 
        double absolu = 0, TT = Ti - T;
     
     
              {
              if (absolu = fabs(TT) <= 2.5) //+fabs(T) // valeur moyenne
                 {
                 N+1;//++; //N = N++   N+1;
                 i++;
                 //printf("N = %i\n", N);
                 Tmoy = (Ti)/N;
                 printf("Tmoy = %f\n", Tmoy);
                 if(N>=10)
                         {
                         fichier2 = fopen("program final bis.txt", "a");
                         //fprintf(fichier2, "%i   %f\n", N, Tmoy); // enregistre les Tmoy et T dans un autre fichier txt
                         fprintf(fichier2, "%f %f\n", H, Tmoy); // enregistre les Tmoy, la durée dans le fichier texte
                         }
                 fclose(fichier2); 
                 }
     
                 else
                 {
                 N;
                 printf("N = %i\n", N);
                 T_trait = Tmoy / N;
                 printf("T_trait = %f\n", T_trait);
                 Ti = T;
                 printf("Ti = %f\n", Ti);
                 N = 0;
                 printf("N = %i\n", N);
                 }
                 //fscanf(FILE* fichier1, "%f\n", &T); 
                 //fprintf(fichier1, "%f\n", T); // On l'écrit toutes les températures dans le fichier
              }
     
       }
       fclose(fichier1); // ferme le fichier txt
    }
     
    int main(void)
    {
     dix_minutes();
     return(1);
    }
    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je ne sais pas, mais déjà, première erreur: Tu as des variables locales avec le même nom que des variables globales. Très mauvais, c'est encore pire que le fait d'avoir des variables globales tout court.
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Etant débutant peux tu m'expliquer ce que s'est des variables globales et des variables locales.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Citation Envoyé par pepsi78 Voir le message
    Etant débutant peux tu m'expliquer ce que s'est des variables globales et des variables locales.
    Je t'avais dis de te renseigner sur la portée des variables, une simple recherche google t'en apprendra déjà pas mal.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    si j'ai bien compris il suffit que je mette la fonction static et c'est tout pour les différencier

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Surtout que je l'avais fait remarqué plusieurs fois dans ce post : http://www.developpez.net/forums/sho...=524924&page=3 , ainsi que le fait de bien regler le compilateur ce qui t'aurai permis de voir que N+1 tout court ne sert à rien.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    c bon j'ai résolu mon problème avec fabs enfin j'espère:

    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
    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
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    double H; 
    int N;
    int i;
    float T, Ti, TT;
    float Tmoyi, Tmoy;
    float T_trait;
    float somme;
    float dix_minutes();
    double Fabs(double u);
    float u;
     
    FILE* fichier1 = NULL;
    FILE* fichier2 = NULL;
    float dix_minutes()
    {
    FILE* fichier1 = NULL;
    FILE* fichier2 = NULL;
    fichier1 = fopen("CalliopeT6_ERV(modif).txt", "r");
    fichier2 = fopen("program final bis.txt", "a"); // création du fichier texte
    for (N=1; N!=1000; N++)
        {
        fscanf(fichier1, "%f\n", &T);
        u = Ti - T;
        Ti = Ti + T;
       H = 0.00694444*i; 
        double u;
     
     
              {
              if (u <= 2.5)
                {
                 N+1;//++; //N = N++   N+1;
                 i++;
     
                 Tmoy = (Ti)/N;
                 printf("Tmoy = %f\n", Tmoy);
                 if(N>=10)
                         {
                         fichier2 = fopen("program final bis.txt", "a");
                         fprintf(fichier2, "%f %f\n", H, Tmoy); // enregistre les Tmoy, la durée dans le fichier texte
                         }
                 fclose(fichier2); 
                 }
     
                 else
                 {
                 N;
                 printf("N = %i\n", N);
                 T_trait = Tmoy / N;
                 printf("T_trait = %f\n", T_trait);
                 Ti = T;
                 printf("Ti = %f\n", Ti);
                 N = 0;
                 printf("N = %i\n", N);
                 }
            }
     
       }
       fclose(fichier1); // ferme le fichier txt
    }
     
    int main(void)
    {
     dix_minutes();
     return(1);
    }

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pepsi78 Voir le message
    bonjour, j'aimerais savoir d'où vient l'erreur dans mon expression fabs:
    Si tu ne suis les conseils qu'on te donne, c'est pas la peine de poster ici... On a pas que ça à faire...
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : D:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:15: warning: function declaration isn't a prototype
    main.c:22: warning: function declaration isn't a prototype
    main.c: In function `dix_minutes':
    main.c:44: warning: suggest parentheses around assignment used as truth value
    main.c:46: warning: statement with no effect
    main.c:62: warning: statement with no effect
    main.c:77: warning: control reaches end of non-void function
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 2 seconds)
    0 errors, 6 warnings
    Ce code compile et devrait faire ce que tu veux... Il ne faut pas faire plus compliqué que nécessaire...
    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
    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
     
    //06/05/08 15:44
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    void dix_minutes (void)
    {
       int N;
       FILE *fichier1 = fopen ("program_final.txt", "r");
       if (fichier1 != NULL)
       {
          float Ti = 0;
          int i = 0;
          double T;
          double Tmoy = 0;
          for (N = 1; N <= 20 && fscanf (fichier1, "%lf\n", &T) == 1; N++)
          {
             double H;
     
             Ti = Ti + T;
             H = 0.00694444 * i;
             {
                double TT = Ti - T;
                double absolu = fabs (TT);
     
                if (absolu <= 2.5)  //+fabs(T) // valeur moyenne
                {
                   Tmoy = (Ti) / N;
     
                   i++;
                   printf ("Tmoy = %f\n", Tmoy);
     
                   if (N >= 10)
                   {
                      FILE *fichier2 = fopen ("program_final_bis.txt", "a"); // création du fichier texte
                      if (fichier2 != NULL)
                      {
                         //fprintf(fichier2, "%i   %f\n", N, Tmoy); // enregistre les Tmoy et T dans un autre fichier txt
                         fprintf (fichier2, "%f %f\n", H, Tmoy); // enregistre les Tmoy, la durée dans le fichier texte
                         fclose (fichier2);
                      }
                   }
                }
                else
                {
                   double T_trait;
     
                   printf ("N = %i\n", N);
                   T_trait = Tmoy / N;
                   printf ("T_trait = %f\n", T_trait);
                   Ti = T;
                   printf ("Ti = %f\n", Ti);
                   N = 0;
                   printf ("N = %i\n", N);
                }
             }
          }
          fclose (fichier1);        // ferme le fichier txt
       }
    }
     
    int main (void)
    {
       dix_minutes ();
       return (1);
    }

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Ton programme compile mais il tourne dans le vide

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pepsi78 Voir le message
    Ton programme compile mais il tourne dans le vide
    Ce qui signifie, en clair ?

    As-tu remarqué que j'ai changé le nom des fichiers ? (je me méfie des espaces...)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Oui j'ai remarqué que tu avais mis des "_".
    J'ai créé un fichier texte avec 20 valeurs entre 8 et 10 et qu'en je lance le programme il ne s'arrete pas.

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par pepsi78 Voir le message
    Oui j'ai remarqué que tu avais mis des "_".
    J'ai créé un fichier texte avec 20 valeurs entre 8 et 10 et qu'en je lance le programme il ne s'arrete pas.
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1.11
    2.22
    3.33
    4.44
    J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Tmoy = 1.110000
    Tmoy = 1.665000
    N = 3
    T_trait = 0.555000
    Ti = 3.330000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 4.440000
    N = 0
     
    Press ENTER to continue.
    Ne me demande pas ce que ça veut dire, mais ça ne plante pas. OK. J'essaye avec 20 valeurs.
    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
     
    1.11
    2.22
    3.33
    4.44
    5.55
    6.66
    7.77
    8.88
    9.99
    10.1010
    11.1111
    12.1212
    13.1313
    14.1414
    15.1515
    16.1616
    17.1717
    18.1818
    19.1919
    20.2020
    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
    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
     
    Tmoy = 1.110000
    Tmoy = 1.665000
    N = 3
    T_trait = 0.555000
    Ti = 3.330000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 4.440000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 5.550000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 6.660000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 7.770000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 8.880000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 9.990000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 10.101000
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 11.111100
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 12.121200
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 13.131300
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 14.141400
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 15.151500
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 16.161600
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 17.171700
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 18.181801
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 19.191900
    N = 0
    N = 1
    T_trait = 1.665000
    Ti = 20.202000
    N = 0
     
    Press ENTER to continue.
    Donne un exemple de fichier à traiter.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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