Langage C problemes Header- fonction
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Langage C problemes Header- fonction



  1. #1
    frequi1

    Langage C problemes Header- fonction


    ------

    bonjour,

    Alors voila mon souci : Quand je crée un fichier de prototype de fonction (ici formules.h)
    Code:
    #ifndef FORMULE_H_INCLUDED
    #define FORMULE_H_INCLUDED
    
    double formU1(double U, double R1, double R2);
    double formU2(double U, double R1, double R2);
    double formU(double U1, double R1, double R2);
    double formR1(double U, double U2, double R2);
    double formR2(double U, double U1, double R1);
    
    #endif // FORMULE_H_INCLUDED
    Mon main() ne l'es reconnais pas et j'ai ete obligés de mettre toute mes fonction avant la fonction main()
    Code:
     #include <stdio.h>
    #include <stdlib.h>
    #include "formule.h"
    
    double formU1(double U, double R1, double R2)
    
    {
        double resultatU1;
        resultatU1 = (U*R1)/(R1+R2);
        return resultatU1;
    
    }
    
    double formU2(double U, double R1, double R2)
    {
        double resultatU2;
        resultatU2 = (U*R2)/(R1+R2);
        return resultatU2;
    
    }
    
    double formU(double U1, double R1, double R2)
    {
        double resultatU;
        resultatU = U1*(R1+R2)/R1;
        return resultatU;
    
    }
    
    double formR1(double U, double U2, double R2)
    {
        double resultatR1;
        resultatR1 = ((U*R2)-(U2*R2))/U2;
        return resultatR1;
    
    }
    
    double formR2(double U, double U1, double R1)
    {
        double resultatR2;
        resultatR2 = (U*R1)-(U1*R1)/U1;
        return resultatR2;
    
    }
    
    int main()
    {
        int choix_recherche;
        double U,U1,U2,R1,R2;
        double result;
        printf ("\t\t\t\tDIVISEUR DE TENSION\n\n\t\t\tCharles Gau le 29 septembre 2012\n\n");
        printf ("Quelle est la valeur recherchee ?\n\n1. R1\n2. R2\n3. U1\n4. U2\n5. U\n\nVotre choix : ");
        scanf ("%d", &choix_recherche);
    
        switch (choix_recherche)
        {
            case 1 :
            printf ("Les valeurs de R sont exprimes en ohms\n");
            printf ("U = ");
            scanf ("%lf", &U);
            printf ("R2 = ");
            scanf ("%lf", &R2);
            printf("U2 = ");
            scanf ("%lf", &U2);
            result = formR1(U,U2,R2);
            printf("Il vous faudra une resistance de %lf Ohms", result);
            break;
    
            case 2 :
            printf ("Les valeurs de R sont exprimes en ohms\n");
            printf ("U = ");
            scanf ("%lf", &U);
            printf("U1 = ");
            scanf("%lf", &U1);
            printf ("R1 = ");
            scanf ("%lf", &R1);
            result = formR2 (U,U1,R1);
            printf("Il vous faudra une resistance de %lf Ohms", result);
            break;
    
            case 3 :
            printf ("Les valeurs de R sont exprimes en ohms\n");
            printf ("U = ");
            scanf ("%lf", &U);
            printf ("R1 = ");
            scanf ("%lf", &R1);
            printf ("R2 = ");
            scanf ("%lf", &R2);
            result = formU1 (U,R1,R2);
            printf("vous aurez une tension de %lf Volt aux bornes de R1", result);
            break;
    
            case 4 :
            printf ("Les valeurs de R sont exprimes en ohms\n");
            printf ("U = ");
            scanf ("%lf", &U);
            printf ("R1 = ");
            scanf ("%lf", &R1);
            printf ("R2 = ");
            scanf ("%lf", &R2);
            result = formU2 (U,R1,R2);
            printf("vous aurez une tension de %lf Volt aux bornes de R2", result);
            break;
    
            case 5 :
            printf ("Les valeurs de R sont exprimes en ohms\n");
            printf ("U1 = ");
            scanf ("%lf", &U1);
            printf ("R1 = ");
            scanf ("%lf", &R1);
            printf ("R2 = ");
            scanf ("%lf", &R2);
            result = formU (U1,R1,R2);
            printf("Il vous faudra une tension de %lf Volts", result);
            break;
    
            default :
            printf("Choix impossible");
            break;
        }
    
    
    
    
    
        return 0;
    Voila les fonctions en dessus du main sont identiques a mon (formule.c). afin de rendre mon code plus clair j'aimerais bien les mettre dans leurs fichier(.c)
    Mais j'ai du faire une erreur quelque part ....... OU SVP ?

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : Langage C problemes Header- fonction

    Bonjour,

    C'est typiquement un problème de communication avec le compilateur, il faut lui "dire" de compiler le fichier formules.c et de l'inclure dans l'exécutable avec le main.c. Dans les IDE, cela se fait de manière transparente en créant un fichier de projets et insérant les différents fichiers de code dans le projet. Si vous programmez sans IDE, il vous faut définir un Makefile (Ce n'est pas obligatoire, mais bien plus pratique dans ce cas).

    D'où ma question: qu'utilisez-vous comme logiciel ? Sous quel système d'exploitation ?

  3. #3
    frequi1

    Re : Langage C problemes Header- fonction

    C'est bon je viens de trouver.

    En fait sous code block il ne suffit pas de créer les fichiers .h et .c
    il faut ensuite clic droit sur le nom du projet et clic sur add files pour les associé au main().

    merci quand meme pour ta reponse.

  4. #4
    invite8486e7c5

    Re : Langage C problemes Header- fonction

    Pour ton information, tu peux créer des fonctions dans un fichier quelconque et inclus dans l'espace de travail.
    Pour les utiliser, avant son appel, tu crées des prototypes en incluant le mot clé << extern >> avant le prototype.
    Tu n'as plus besoin de créer les fonctions dans le même fichier que l'appel.
    Le grand avantage est que tu peux appeler les fonctions dans tous les fichiers où tu crées le prototype.
    Ce mot clé fonctionne aussi pour les variables.

    double Function(double Prm){...} //création de la fonction
    double Variable; //création de la variable globale

    extern double Function(double Prm); //création du prototype de fonction
    extern double Variable; //création du prototype de variable globale

  5. A voir en vidéo sur Futura
  6. #5
    frequi1

    Re : Langage C problemes Header- fonction

    en fait l'utilité c'est juste au cas ou tu te serves de cette fonction pour un autre programme c'est ca ?

  7. #6
    inviteb9f49292

    Re : Langage C problemes Header- fonction

    En fait sous code block il ne suffit pas de créer les fichiers .h et .c
    il faut ensuite clic droit sur le nom du projet et clic sur add files pour les associé au main().

    merci quand meme pour ta reponse.
    C'est justement ce que t'expliquait de faire Paraboloide_Hyperbolique.
    Et c'est également pour ça que je conseils aux personnes qui débutent la programmation de se frapper les Makefiles à la paluche pour comprendre comment marche le processus de la compilation...

    Le grand avantage est que tu peux appeler les fonctions dans tous les fichiers où tu crées le prototype.
    Ce mot clé fonctionne aussi pour les variables.

    double Function(double Prm){...} //création de la fonction
    double Variable; //création de la variable globale

    extern double Function(double Prm); //création du prototype de fonction
    extern double Variable; //création du prototype de variable globale
    Non seulement ça n'a pas grand chose à voir avec la question, mais en plus c'est vraiment imprécis, voir limite faux.
    1°) Il faut expliquer la différence entre la déclaration et la définition (d'une variable et/ou d'une fonction), c'est nécessaire pour introduire la notion de "extern".
    2°) De mémoire, le mot clef "extern" est implicite devant la déclaration d'une fonction... A la différence du mot clef "static", et c'est (quasiment) l'inverse pour les variables...

    En résumé: il y a un intérêt à déclarer une fonction en "static", il y a un intérêt à déclarer une variable "static" ou "extern", mais si il y a intérêt à déclarer une fonction en "extern", c'est pour éviter d'inclure (ou d'écrire) un fichier d'entête (header), donc une mauvaise habitude à éviter...

Discussions similaires

  1. Fonction KILL langage c
    Par invite95771b4b dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 10/02/2012, 19h20
  2. [langage C - GTK+] Fonction window_set_resizable
    Par piwi dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 12/07/2010, 16h25
  3. probleme fonction execlp langage c
    Par invite67f41ab0 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 17/12/2009, 23h37
  4. langage c++ fonction get
    Par invitedbe5e39e dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/10/2007, 13h54
  5. Fonction attente en langage C
    Par invite3921452f dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 26/03/2006, 17h14