[C] Problèmes Fonctions & Structures
Résolu/Fermé
A voir également:
- [C] Problèmes Fonctions & Structures
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Les fonctions excel en anglais - Guide
- Fonctions de base excel - Guide
- Fonction max en c - Forum C
9 réponses
Je sens que tu débutes comme moi avec le tutoriel sur le Site du Zéro!! N'est-ce pas?
Bref...je comprend pas pourquoi tu écris ça : #include "main.h"
pourrais-tu m'expliquer?
Bref...je comprend pas pourquoi tu écris ça : #include "main.h"
pourrais-tu m'expliquer?
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
27 juin 2009 à 11:10
27 juin 2009 à 11:10
Salut,
voici quelques commentaires:
J'espere ca pourra t'aider!!
@+
voici quelques commentaires:
int main() { double x=0, y=0; EUCL calcul ; system ("cls"); printf ("\nPremier nombre : "); scanf ("%lf", &x); printf ("\nDeuxieme nombre : "); scanf ("%lf", &y); //passage par reference de ta structure division_eucl(x,y,&calcul); printf ("\n%lf / %lf = %lf\nReste : %ld\n\n\n", x, y, calcul.result, calcul.reste); system ("pause"); return 0; } //tu n'a pas besoin de retour car tu passe ta structure en argument void division_eucl(double x,double y,EUCL*calcul) //double division_eucl(x,y,calcul) { calcul->result = x / y; calcul->reste = x % y; // return (calcul); } Main.h typedef struct EUCL EUCL; struct EUCL { double result; long reste; }; void division_eucl(double,double,EUCL*);
J'espere ca pourra t'aider!!
@+
Utilisateur anonyme
27 juin 2009 à 11:11
27 juin 2009 à 11:11
Salut,
C'est pour ajouter à mon projet le fichier Header qui contient le prototype de ma fontion et ma structure.
#include "main.h"
C'est pour ajouter à mon projet le fichier Header qui contient le prototype de ma fontion et ma structure.
Utilisateur anonyme
27 juin 2009 à 11:12
27 juin 2009 à 11:12
Ok merci beaucoup Chuka, je regarde sa tout de suite
Merci =)
Merci =)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
27 juin 2009 à 11:21
27 juin 2009 à 11:21
J'ai modifié mon code, voila le fichier "main.c" :
J'ai aussi modifié le prototype de ma fonction dans le fichier ".h"
Mais il y a encore un problème, lorsque je debug mon programme :
A cette ligne :
Code::Blocks m'affiche cette erreur :
Vous avez une idée ?
Merci d'avance
Bye
#include <stdio.h> #include <stdlib.h> #include "main.h" int main() { double x=0, y=0; EUCL calcul = {0}; system ("cls"); printf ("\nPremier nombre : "); scanf ("%lf", &x); printf ("\nDeuxieme nombre : "); scanf ("%lf", &y); division_eucl(x,y,&calcul); // Passage par reference de la structure printf ("\n%lf / %lf = %lf\nReste : %ld\n\n\n", x, y, calcul.result, calcul.reste); system ("pause"); return 0; } void division_eucl(double x,double y,EUCL*calcul) //Pas besoin de retour car la structure est en argument. { calcul->result = x / y; calcul->reste = x % y; }
J'ai aussi modifié le prototype de ma fonction dans le fichier ".h"
Mais il y a encore un problème, lorsque je debug mon programme :
A cette ligne :
calcul->reste = x % y;
Code::Blocks m'affiche cette erreur :
main.c|25|error: invalid operands to binary %|
Vous avez une idée ?
Merci d'avance
Bye
rida_inf
Messages postés
71
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
29 septembre 2016
1
27 juin 2009 à 11:23
27 juin 2009 à 11:23
pourquoi t'utilise le type eucl pas struct ?
Utilisateur anonyme
27 juin 2009 à 11:25
27 juin 2009 à 11:25
En fait, j'ai réussi a contourné le problème grâce à la fonction "fmod" de <math.h>.
Pour ceux qui sont interessés, voici le code final :
main.c
main.h
Merci encore Chuka pour ton aide =)
Bye
Pour ceux qui sont interessés, voici le code final :
main.c
#include <stdio.h> #include <stdlib.h> #include <math.h> #include "main.h" int main() { double x=0, y=0; EUCL calcul = {0}; system ("cls"); printf ("\nPremier nombre : "); scanf ("%lf", &x); printf ("\nDeuxieme nombre : "); scanf ("%lf", &y); division_eucl(x,y,&calcul); // Passage par reference de la structure printf ("\n%lf / %lf = %ld\nReste : %ld\n\n\n", x, y, calcul.result, calcul.reste); system ("pause"); return 0; } void division_eucl(double x,double y,EUCL*calcul) //Pas besoin de retour car la structure est en argument. { calcul->result = x / y; calcul->reste = fmod(x,y); }
main.h
typedef struct EUCL EUCL; struct EUCL { long result; long reste; }; void division_eucl(double x,double y,EUCL*calcul); double fmod(double,double);
Merci encore Chuka pour ton aide =)
Bye
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
27 juin 2009 à 12:19
27 juin 2009 à 12:19
Salut,
J'arrive un peu tard.
Effectivement tu devais utiliser fmod puisque x et y ne sont pas des entiers.
Sinon juste une petite correction :
printf ("\n%lf / %lf = %ld\nReste : %ld\n\n\n", x, y, calcul.result,
Il faut mettre %f dans printf et non %lf.
// Passage par reference de la structure
N'oublie pas qu'en C il n'y a pas de passage par référence. Ici tu as fait un passage par adresse.
Cdlt
J'arrive un peu tard.
Effectivement tu devais utiliser fmod puisque x et y ne sont pas des entiers.
Sinon juste une petite correction :
printf ("\n%lf / %lf = %ld\nReste : %ld\n\n\n", x, y, calcul.result,
Il faut mettre %f dans printf et non %lf.
// Passage par reference de la structure
N'oublie pas qu'en C il n'y a pas de passage par référence. Ici tu as fait un passage par adresse.
Cdlt
Utilisateur anonyme
27 juin 2009 à 12:24
27 juin 2009 à 12:24
Ok merci =)
Je vais poser une question idiote, mais pourquoi je doit mettre "%f" ? Et pas "%lf" ?
Je vais poser une question idiote, mais pourquoi je doit mettre "%f" ? Et pas "%lf" ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
27 juin 2009 à 13:35
27 juin 2009 à 13:35
pourquoi je doit mettre "%f" ? Et pas "%lf" ?
Car en C, les float sont promus en double pour les fonctions à arguments variables (cas de printf).
A noter que pour scanf c'est différent, il faut bel et bien utiliser %lf pour un double.
Car en C, les float sont promus en double pour les fonctions à arguments variables (cas de printf).
A noter que pour scanf c'est différent, il faut bel et bien utiliser %lf pour un double.