| probleme dans une fonction | |
|
|
Auteur | Message |
---|
reggaerai
Messages : 10 Points : 5443 Date d'inscription : 19/02/2010
| Sujet: probleme dans une fonction Mar 20 Avr - 15:00 | |
| bonjour tout le monde, j'ai un problème dans ce programme c'est que j'arrive pas à appeler la fonction saisir pour entrer la date de naissance de l'employé voila le code - Code:
-
typedef struct { int jour; int mois; int annee; }date; typedef struct { int matr; char nom[30]; char prenom[30]; float salaire; date *date_emb; date *date_naiss; }employe; employe *entreprise; void saisir(date *test) { trop langue donc j'ai préféré ne pas l'écrire mais il marche bien } saisirmoi(employe *test) { printf("\ndonner le salaire de l'employ‚ : "); scanf("%f",test->salaire); printf("\ndonner le date de naissance de l'employ‚ : "); saisir(test->date_emb); } main() { date *a,*b; clrscr(); employe *moi; saisirmoi(moi); getch(); } | |
|
| |
Choubisoft Admin
Messages : 123 Points : 7124 Date de naissance : 02/11/1989 Date d'inscription : 18/02/2010 Age : 35 Localisation : Casablanca Emploi/loisirs : Etudiant
| Sujet: Re: probleme dans une fonction Mar 20 Avr - 15:10 | |
| Bon tout d abord je doit voire la fonction Saisie, mais la 1er chose a réglé dans ton code c'est que la fonction saisie attend une adresse est toi tu lui envoi une valeur donc ça ne vas pas marché, soit que tu procède par tout par valeur ou par code. si je suis ce que t'a fais a alors l'appelle de la fonction saisie seras comme ça : - Code:
-
saisir(&test->date_emb); la j'envoi l'adresse & non pas la valeur, sur tout pas confondre avec "->" ça c'est juste test qui pointe sur la valeur de date... mais toi tu veux envoyer l'adresse du pointeur qui pointe sur ta valeur . | |
|
| |
reggaerai
Messages : 10 Points : 5443 Date d'inscription : 19/02/2010
| Sujet: Re: probleme dans une fonction Mar 20 Avr - 16:41 | |
| - Code:
-
#include #include typedef struct { int jour; int mois; int annee; }date; typedef struct { int matr; char nom[30]; char prenom[30]; float salaire; date *date_emb; date *date_naiss; }employe; employe *entreprise; void saisir(date *test) { printf("Entrer une date.\n"); do { printf("\nEntrer l'ann‚e: "); scanf("%d",&test->annee); } while (test->annee<1900 || test->annee>2020); printf("entrer le mois "); scanf("%d",&test->mois); if( test->mois==1 || test->mois==3 || test->mois==5 || test->mois==7 || test->mois==8 || test->mois==10 || test->mois==12) { do{ printf("donner le jour"); scanf("%d",&test->jour); } while(test->jour<0 || test->jour>31); } if( test->mois==4 || test->mois==6 || test->mois==9 || test->mois==11 ) { do{ printf("donner le jour"); scanf("%d",&test->jour); } while(test->jour<0 || test->jour>30); } if( test->mois==2) { if( test->annee%4==0 && test->annee%100!=0 || test->annee%400==0 ) { do { printf("donner le jour"); scanf("%d",&test->jour); } while(test->jour<0 || test->jour>29); } else { do { printf("donner le jour"); scanf("%d",&test->jour); } while(test->jour<0 || test->jour>28); } } printf("\nl'annee est %d",test->annee); printf("\nle mois est %d",test->mois); printf("\nle jour est %d",test->jour); } void saisirmoi(employe *test) { printf("\ndonner le salaire de l'employ‚ : "); scanf("%f",test->salaire); printf("\ndonner le date de naissance de l'employ‚ : "); saisir(&test->date_emb); printf("voila"); } main() { date *a,*b; clrscr(); employe *moi; saisirmoi(moi); getch(); } | |
|
| |
Choubisoft Admin
Messages : 123 Points : 7124 Date de naissance : 02/11/1989 Date d'inscription : 18/02/2010 Age : 35 Localisation : Casablanca Emploi/loisirs : Etudiant
| Sujet: Re: probleme dans une fonction Mar 20 Avr - 16:57 | |
| 1er erreur que tu doit réglé - Code:
-
if( test->annee%4==0 && test->annee%100!=0 || test->annee%400==0 ) ça n'a jamais existé en C est ça n'a rien de logique bon règle ces problème la & en parleras plus tard du passage par adresse u valeur - Code:
-
/home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c||In function ‘saisir’:| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|48|warning: suggest parentheses around ‘&&’ within ‘||’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c||In function ‘saisirmoi’:| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|74|warning: format ‘%f’ expects type ‘float *’, but argument 2 has type ‘double’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|76|warning: passing argument 1 of ‘saisir’ from incompatible pointer type| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|19|note: expected ‘struct date *’ but argument is of type ‘struct date **’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|80|warning: return type defaults to ‘int’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c||In function ‘main’:| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|82|warning: implicit declaration of function ‘clrscr’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|86|warning: implicit declaration of function ‘getch’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|81|warning: unused variable ‘b’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|81|warning: unused variable ‘a’| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|87|warning: control reaches end of non-void function| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|85|warning: ‘moi’ is used uninitialized in this function| obj/Debug/main.o||In function `main':| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|82|undefined reference to `clrscr'| /home/choub-info/Documents/TP2009_10/S4/TP2/test/main.c|86|undefined reference to `getch'| ||=== Génération finie: 2 erreurs, 10 avertissements ===|
| |
|
| |
kreamo
Messages : 22 Points : 5444 Date de naissance : 14/07/1989 Date d'inscription : 23/02/2010 Age : 35 Localisation : Mohammedia Emploi/loisirs : ta 7aja!hh!
| Sujet: Re: probleme dans une fonction Jeu 22 Avr - 18:47 | |
| voila la Ton Code : - Code:
-
#include #include typedef struct { int jour; int mois; int annee; }date; typedef struct { int matr; char nom[30]; char prenom[30]; float salaire; date *date_emb; date *date_naiss; }employe; employe *entreprise; void saisir() { date test; printf("Entrer une date.\n"); do { printf("Entrer l'ann‚e: "); scanf("%d",&test.annee); } while (test.annee<1900 || test.annee>2020); do { printf("entrer le mois "); scanf("%d",&test.mois); } while (test.mois<1 || test.mois>12); if( test.mois==1 || test.mois==3 || test.mois==5 || test.mois==7 || test.mois==8 || test.mois==10 || test.mois==12) { do{ printf("donner le jour"); scanf("%d",&test.jour); } while(test.jour<0 || test.jour>=31); } printf("la date est %02d/%02d/%d",test.jour,test.mois,test.annee); } void saisirmoi(employe *test) { printf("\ndonner le salaire de l'employ‚ : "); scanf("%f",&test->salaire); printf("\ndonner le date de naissance de l'employ‚ : "); saisir(test->date_emb); printf("\nvoila"); } main() { employe moi; saisirmoi(&moi); getch(); }
| |
|
| |
reggaerai
Messages : 10 Points : 5443 Date d'inscription : 19/02/2010
| Sujet: Re: probleme dans une fonction Dim 25 Avr - 6:11 | |
| je pense que la meilleur solution est de mettre dans la déclaration de la structure employe à la place de date *date_emb; mettre date date-emb; ca veux sire ne pas le mettre comme pointeur mais le probleme reste le meme si on veux la déclarer en pointeur on tout les cas merci pour tous ceux qui ont posté des repenses . | |
|
| |
aknet
Messages : 29 Points : 5464 Date de naissance : 31/05/1990 Date d'inscription : 19/02/2010 Age : 34 Localisation : Casablanca - AlbertCity Emploi/loisirs : Informatique/Tennis
| Sujet: Re: probleme dans une fonction Lun 26 Avr - 21:19 | |
| Salut,
Je crois qu'il y a une petite erreur dans ton programme, essaye de lui donner comme mois : 12, et comme jour : 31, il va te redemander te lui donner le jour ... Une autre question : quel compilateur tu travailles avec : Code::Blocks, Dev-Cpp ou bien Turbo ??
Merci. | |
|
| aknet.net@gmail.com |
|
Contenu sponsorisé
| Sujet: Re: probleme dans une fonction | |
| |
|
| |
| probleme dans une fonction | |
|