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 de makefile et amelioration d'un programme


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut problème de makefile et amelioration d'un programme
    Bonsoir à tous !
    Voilà, je débute en C et je rencontre un problème avec un code. Lorsque je compile mon code, j'ai l'erreur: undefined reference to 'sin'. Je ne comprends pas, j'ai bien intégré la librairie math.h et j'ai bien le -lm dans mon makefile:

    CFLAGS=-Wall -ansi -pedantic-errors
    LDFLAGS=-lm
    J'ai réussi à compiler mon code sur un autre ordinateur ( avec le même makefile), mais ça ne marche pas sur le mien, pourquoi ?

    J'ai également une seconde question: voici mon 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
    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
    #include<stdio.h>
    #include<math.h>
    	/* prototypes des fonctions crées /*/
    double inverse_f(double,double, double);
    double position_reelle(double, double, double);
    double ecart_pixel(double,double);
     
     
    int main()
    {
    	double p1_reel,p2_reel,p3_reel,p4_reel,p5_reel,p6_reel,p7_reel,p8_reel,p9_reel,p10_reel,p11_reel,p12_reel,p13_reel,p14_reel,p15_reel,p16_reel;
     
    	double p1_pixel,p2_pixel,p3_pixel,p4_pixel,p5_pixel,p6_pixel,p7_pixel,p8_pixel,p9_pixel,p10_pixel,p11_pixel,p12_pixel,p13_pixel,p14_pixel,p15_pixel,p16_pixel;
    	double p1_mesure,p2_mesure,p3_mesure,p4_mesure,p5_mesure,p6_mesure,p7_mesure,p8_mesure,p9_mesure,p10_mesure,p11_mesure,p12_mesure,p13_mesure,p14_mesure,p15_mesure,p16_mesure;
    	double Pi=3.14159265359;
    	double phi0 = -Pi/3.96105; /* Valeur optimale 3.96105 */
    	double phi1 = Pi/3.96105;
    	double somme_ecart_pixel;
     
    	/* position des traits de la mire (colonne) */
    	p1_mesure = 3;
    	p2_mesure = 23;
    	p3_mesure = 41;
    	p4_mesure = 58;
    	p5_mesure = 74;
    	p6_mesure = 90;
    	p7_mesure = 105;
    	p8_mesure = 120;
    	p9_mesure = 135;
    	p10_mesure = 150;
    	p11_mesure = 165;
    	p12_mesure = 180;
    	p13_mesure = 196;
    	p14_mesure = 213;
    	p15_mesure = 231;
    	p16_mesure = 251;
     
    	/* position reelle ( je cherche la position d'un pixel dans l'espace reel )*/
    	p1_reel = position_reelle(1,phi0,phi1); 
    	p2_reel = position_reelle(2, phi0,phi1); 
    	p3_reel = position_reelle(3, phi0, phi1); 
    	p4_reel = position_reelle(4, phi0, phi1); 
    	p5_reel = position_reelle(5, phi0, phi1); 
    	p6_reel = position_reelle(6, phi0, phi1); 
    	p7_reel = position_reelle(7, phi0, phi1); 
    	p8_reel = position_reelle(8, phi0, phi1); 
    	p9_reel = position_reelle(9,phi0,  phi1); 
    	p10_reel = position_reelle(10, phi0, phi1); 
    	p11_reel = position_reelle(11, phi0, phi1); 
    	p12_reel = position_reelle(12, phi0, phi1); 
    	p13_reel = position_reelle(13, phi0, phi1); 
    	p14_reel = position_reelle(14, phi0, phi1); 
    	p15_reel = position_reelle(15, phi0, phi1); 
    	p16_reel = position_reelle(16, phi0, phi1); 
     
    	/* position des pixels (il y a le +3 car le premier pic est sur la 3ème colonne de l'image)*/
    	p1_pixel = 3+inverse_f(p1_reel,phi0,phi1);
    	p2_pixel = 3+inverse_f(p2_reel,phi0,phi1);
    	p3_pixel = 3+inverse_f(p3_reel,phi0,phi1);
    	p4_pixel = 3+inverse_f(p4_reel,phi0,phi1);
    	p5_pixel = 3+inverse_f(p5_reel,phi0,phi1);
    	p6_pixel = 3+inverse_f(p6_reel,phi0,phi1);
    	p7_pixel = 3+inverse_f(p7_reel,phi0,phi1);
    	p8_pixel = 3+inverse_f(p8_reel,phi0,phi1);
    	p9_pixel = 3+inverse_f(p9_reel,phi0,phi1);
    	p10_pixel = 3+inverse_f(p10_reel,phi0,phi1);
    	p11_pixel = 3+inverse_f(p11_reel,phi0,phi1);
    	p12_pixel = 3+inverse_f(p12_reel,phi0,phi1);
    	p13_pixel = 3+inverse_f(p13_reel,phi0,phi1);
    	p14_pixel = 3+inverse_f(p14_reel,phi0,phi1);
    	p15_pixel = 3+inverse_f(p15_reel,phi0,phi1);
    	p16_pixel = 3+inverse_f(p16_reel,phi0,phi1);
     
    	/* somme des ecarts des pixels au carré */
    	somme_ecart_pixel = ecart_pixel(p1_pixel,p1_mesure)+ecart_pixel(p2_pixel,p2_mesure)+ecart_pixel(p3_pixel,p3_mesure)+ecart_pixel(p4_pixel,p4_mesure)+ecart_pixel(p5_pixel,p5_mesure)+ecart_pixel(p6_pixel,p6_mesure)+ecart_pixel(p7_pixel,p7_mesure)+ecart_pixel(p8_pixel,p8_mesure)+ecart_pixel(p9_pixel,p9_mesure)+ecart_pixel(p10_pixel,p10_mesure)+ecart_pixel(p11_pixel,p11_mesure)+ecart_pixel(p12_pixel,p12_mesure)+ecart_pixel(p13_pixel,p13_mesure)+ecart_pixel(p14_pixel,p14_mesure)+ecart_pixel(p15_pixel,p15_mesure)+ecart_pixel(p16_pixel,p16_mesure);
     
    	printf("\tSomme_ecart_pixel = %f\n",somme_ecart_pixel);
     
    return 0;
    }
     
    	/* fonction inverse */
    double inverse_f(double x,double phi0, double phi1)  /*( x correspond à la position d'un pixel dans l'espace réel)*/
    {
    	double resultat = 0.0;
    	resultat = ((asin(x)-phi0)/(phi1-phi0))*248;   /* fonction de passage de l'etat reel au pixel */
    return resultat;
    }
     
    	/* fonction des positions reelles */
    double position_reelle(double n, double phi0, double phi1)     /* n correspond à la position du pixel */
    {
    	double resultat;
    	resultat = sin(phi0) + ((sin(phi1)-sin(phi0))/15)*(n-1);
    return resultat;
    }
     
    	/* écart des pixels au carré */
    double ecart_pixel(double p_estime,double p_mesure)
    {
    	double resultat;
    	resultat = pow((p_estime-p_mesure),2);
    return resultat;
    }
    Il fonctionne, mais je voudrais un autre moyen, plus court, avec des boucles for, mais je ne voit pas comment. Auriez vous une idée ? Merci d'avance

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Salut
    Pourquoi ne postes-tu pas le makefile ?
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Plutôt que d'utiliser NB variables qui ont pour noms p(i)_reel utilise un tableau de NB éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define NB 16
    double p_reel[NB];
    Puis une simple boucle for pour les parcourir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0 ; i<NB ; ++i)
        // p_reel[i]

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Oui, je pensais le faire avec des tableaux, mais le problème, c'est que je m'en sert comme variable dans une fonction après

Discussions similaires

  1. problème de makefile avec programme java
    Par lostsoul dans le forum Linux
    Réponses: 4
    Dernier message: 03/06/2011, 14h08
  2. Problème sur la commande COPY depuis un programme Java
    Par klereth dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 10/02/2006, 14h14
  3. Problème lors de l'exécution de mes programmes
    Par darkmalak01 dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2005, 18h35
  4. [Dev-cpp]Problème de Makefile
    Par gege2061 dans le forum Dev-C++
    Réponses: 2
    Dernier message: 15/02/2005, 11h19
  5. Problème avec makefile
    Par snooopppp dans le forum Systèmes de compilation
    Réponses: 3
    Dernier message: 22/02/2004, 15h46

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