A voir également:
- Fonction dscos en C
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- Virginie organise un rallye avec 30 équipes. elle veut créer un code pour désigner chaque équipe. elle a commencé à la main, mais elle voudrait le faire calculer à l'aide d'une formule. proposez une formule comportant une seule fonction et à recopier vers le bas dans la colonne a du fichier à télécharger. quelle formule sera en a9 ? ✓ - Forum Programmation
5 réponses
Quel est le problème ?
Problème compilation, exécution ...
Les messages d'erreur sont les bienvenus (pour ceux du compilateur, seule la première demi-douzaine est utile).
Problème compilation, exécution ...
Les messages d'erreur sont les bienvenus (pour ceux du compilateur, seule la première demi-douzaine est utile).
oui c'est un problème de compilation. Quand je compile ça me met cette phrase d'erreur :
15 C:\Users\Harouna\Documents\DEVCPP\td4_III_4.c conflicting types for 'fact'
15 C:\Users\Harouna\Documents\DEVCPP\td4_III_4.c conflicting types for 'fact'
Et oui, c'est logique... comme toujours avec le compilateur ;-)
Dans la fonction 'dscos' il rencontre la fonction 'fact', 'Tiens, se dit-il, je ne connais pas cette fonction, elle sera sans doute déclarée plus tard; en attendant je parie qu'elle sera de type 'int'.
Quelque temps plus tard, quand il rencontre la fonction 'fact', il se dit: 'Tiens il doit y avoir une erreur car la fonction n'est pas de type 'int'"; alors il s'arrête et retourne une erreur.
On pourrait se dire, je vais recompiler jusqu'à ce qu'il parie sur une fonction 'double'; ce n'est pas la peine, il parie toujours sur une fonction 'int' (c'est ce qu'on lui a dit de faire).
Il existe deux solutions:
- soit déplacer la fonction 'fact' et la mettre avant la fonction 'dcos',
- soit simplement déclarer la fonction 'fact' avant la fonction 'dcos'; c'est ce que l'on appelle le prototypage.
Bon courage... car il y a d'autres erreurs.
Dans la fonction 'dscos' il rencontre la fonction 'fact', 'Tiens, se dit-il, je ne connais pas cette fonction, elle sera sans doute déclarée plus tard; en attendant je parie qu'elle sera de type 'int'.
Quelque temps plus tard, quand il rencontre la fonction 'fact', il se dit: 'Tiens il doit y avoir une erreur car la fonction n'est pas de type 'int'"; alors il s'arrête et retourne une erreur.
On pourrait se dire, je vais recompiler jusqu'à ce qu'il parie sur une fonction 'double'; ce n'est pas la peine, il parie toujours sur une fonction 'int' (c'est ce qu'on lui a dit de faire).
Il existe deux solutions:
- soit déplacer la fonction 'fact' et la mettre avant la fonction 'dcos',
- soit simplement déclarer la fonction 'fact' avant la fonction 'dcos'; c'est ce que l'on appelle le prototypage.
Bon courage... car il y a d'autres erreurs.
Merci Loupius de m'avoir aidé à franchir cette étape ! Je vais essayer de réparer les autres erreurs, mais je crois déjà que je vous solliciterai de nouveau, car j'ai passé tellement de temps là-dessus que je vois plus rien.
Je suis vraiment fatigué par ce programe, là je comprends plus rien du tout :
#include<stdio.h>
#include<conio.h>
#include<math.h>
double fact(unsigned int n)
{ double resultat=1;
int i;
for(i=1;i<=n;i++)
resultat = resultat*i;
return resultat;
}
float p_puiss(float x,unsigned int n)
{ int compteur=0;
float resultat=1;
while(compteur<n)
{ compteur = compteur+1;
resultat = resultat*x;
}
return resultat;
}
float dcos(float x,unsigned int n)
{ float cosx=1;
int i;
for(i=1;i<=n;i++)
cosx = cosx + p_puiss(-1,i)* p_puiss(x,2*i)/ fact(2*i);
return cosx;
}
int main()
{ float angl_rd;
unsigned int n=30,i;
float dcos(float,unsigned int);
printf("\nEntrer la valeur de l'angle en radians : ");
scanf("%f",&angl_rd);
printf("\nLes approximations fournies par dscos sont :");
for(i=1;i<=n;i++)
printf("\ncos(%f) ~~ %f",angl_rd,dscos(angl_rd,n));
printf("\nla valeur de cos(x) par la fonction standard est: %.2f",cos(angl_rd));
getch();
}
Voici les messages d'erreur quand je compile :
C:\Users\Harouna\AppData\Local\Temp\cckXcaaa.o(.text+0x15e) In function `main':
[Linker error] undefined reference to `dscos'
C:\Users\Harouna\AppData\Local\Temp\cckXcaaa.o(.text+0x15e) ld returned 1 exit status
#include<stdio.h>
#include<conio.h>
#include<math.h>
double fact(unsigned int n)
{ double resultat=1;
int i;
for(i=1;i<=n;i++)
resultat = resultat*i;
return resultat;
}
float p_puiss(float x,unsigned int n)
{ int compteur=0;
float resultat=1;
while(compteur<n)
{ compteur = compteur+1;
resultat = resultat*x;
}
return resultat;
}
float dcos(float x,unsigned int n)
{ float cosx=1;
int i;
for(i=1;i<=n;i++)
cosx = cosx + p_puiss(-1,i)* p_puiss(x,2*i)/ fact(2*i);
return cosx;
}
int main()
{ float angl_rd;
unsigned int n=30,i;
float dcos(float,unsigned int);
printf("\nEntrer la valeur de l'angle en radians : ");
scanf("%f",&angl_rd);
printf("\nLes approximations fournies par dscos sont :");
for(i=1;i<=n;i++)
printf("\ncos(%f) ~~ %f",angl_rd,dscos(angl_rd,n));
printf("\nla valeur de cos(x) par la fonction standard est: %.2f",cos(angl_rd));
getch();
}
Voici les messages d'erreur quand je compile :
C:\Users\Harouna\AppData\Local\Temp\cckXcaaa.o(.text+0x15e) In function `main':
[Linker error] undefined reference to `dscos'
C:\Users\Harouna\AppData\Local\Temp\cckXcaaa.o(.text+0x15e) ld returned 1 exit status
Ah oui, on fait des tas de fautes d'orthographe... et tout le monde comprend quand même parce que cerveau est souple... mais pas le compilateur !!!
Dans ton 'main' tu appelles une fonction 'dscos'... qui n'existe pas !!! Le compilateur est intolérant, mais il ne faut surtout pas lui en vouloir ;-)
A suivre.
Dans ton 'main' tu appelles une fonction 'dscos'... qui n'existe pas !!! Le compilateur est intolérant, mais il ne faut surtout pas lui en vouloir ;-)
A suivre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question