Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/05/2007, 17h59   #1
Invité de passage
 
Inscription : mai 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 14
Points : 0
Points : 0
Par défaut problème d'exécution sous linux

voilà mon programme mais j'ai un problème de l'exécution; il m'affiche sur le consol , undefine refurence to floor et ceil
Code C :
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
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
 
double Arrondit( double x)
{
 
   if (0<=x)
   {
      return floor(x+0.5);
   }
   else
   {
      return ceil(x-0.5);
   }
}
 
main() {
double Arrondit( double x);
 double nbre ;
printf("donne ton nbre\n");
scanf("%lf",&nbre);
 
printf("PT  de x = %f\n", Arrondit(  nbre) );
}
merci pour votre aide.
tosna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 18h21   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 776
Points : 7 776
le message d'erreur est clair pourtant tu n'a jamais defini floor et ceil tout simplement donc tu ne peux pas utiliser ces fonctions alors tu dois renvoyer un resultat brut dans ton return et pas un resultat de fonction floor ou ceil

Code C :
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
pur31-2-82-225-219-67:~ # vi toto.c 
7:~ # gcc toto.c -o titi
toto.c: In function ‘Arrondit’:
toto.c:11: error: called object ‘floor’ is not a function
toto.c:15: error: called object ‘ceil’ is not a function
7:~ # vi toto.c 
7:~ # gcc toto.c -o titi
7:~ # ./titi
donne ton nbre
10.2
PT de x = 10.700000
7:~ # cat toto.c && rm titi toto.c
#include<stdio.h>
 #include <stdlib.h>
 #include<math.h>
 
 double Arrondit( double x)
 {
 if (0<=x)
         {
         return (x+0.5);
         }
 else
         {
         return (x-0.5);
         }
 }
 
 main() {
 double Arrondit( double x);
 double nbre ;
 printf("donne ton nbre\n");
 scanf("%lf",&nbre);
 
 printf("PT de x = %f\n", Arrondit( nbre) );
 }
7:~ #
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 18h55   #3
Invité de passage
 
Inscription : mai 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 14
Points : 0
Points : 0
Par défaut re

vous pouvez me corriger mon programme
tosna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 10h52   #4
Membre chevronné
 
Inscription : décembre 2004
Messages : 1 213
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 213
Points : 766
Points : 766
Salut, ton pb est plus un pb de C qu'un pb linux, donc tu devrais aller sur le forum C

quand tu compile, il faut que tu rajoute -lm à ta ligne de compilation pour pouvoir avoir accès aux fonctions mathématiques lm = librairy mathématique

le prototype de main n'est pas main() mais soit int main(void) soit int main(int argc,char * argv[])
salseropom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 10h57   #5
Membre chevronné
 
Inscription : décembre 2004
Messages : 1 213
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 213
Points : 766
Points : 766
Citation:
Envoyé par tosna
Code C :
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
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
 
double Arrondit( double x)
{
 
   if (0<=x)
   {
      return floor(x+0.5);
   }
   else
   {
      return ceil(x-0.5);
   }
}
 
main() {
double Arrondit( double x);
 double nbre ;
printf("donne ton nbre\n");
scanf("%lf",&nbre);
 
printf("PT  de x = %f\n", Arrondit(  nbre) );
}
merci pour votre aide.
ta fonction main() est très bizarre... le x n'est pas défini

correction :

Code :
1
2
3
4
5
6
7
8
9
 
int main(void)
 {
double Arrondit( double x);  //efface cette ligne qui ne sert à rien et ce n'est pas comme ça qu'on appelle une fonction en C (double toto=Arrondit(x);)
 double nbre ;
printf("donne ton nbre\n");
scanf("%lf",&nbre);
 
printf("PT  de x = %f\n", Arrondit(  nbre) ); // ne serait-ce pas plutôt printf("PT  de nbre = %f\n", Arrondit(  nbre) );  ?
salseropom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2007, 11h26   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 776
Points : 7 776
Citation:
Envoyé par tosna
vous pouvez me corriger mon programme
comme tu le vois dans mes copies d'ecran il est déja corrigé.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h09.


 
 
 
 
Partenaires

Hébergement Web