Besoin d'explication sur les structures en c

Fermé
LoVerMaKi Messages postés 1 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 21 février 2008 - 21 févr. 2008 à 21:08
mansas87 Messages postés 23 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 31 août 2009 - 2 mars 2008 à 11:07
Bonjour,
On me demande de faire un agenda voici se que j'ai commencer...:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//Définition des variables a types personnels
/*
typedef date;
typedef heure;
typedef jour;
typedef rendezvous;
*/

//Définitons des structures personnelles
typedef struct {
char jnom;
int j;
int m;
int a;
} date;

typedef struct {
int h;
int hm;
} heure;

typedef struct {
int existe;
char d;
char table[10];
heure debut;
heure fin;
} rendezvous;

typedef struct {
int j;
char jnom;
} jour;

//Énumeration des jours et des mois
enum ejours{lundi=1,mardi=2,mercredi=3,jeudi=4,vendredi=5,samedi=6,dimanche=7};
enum emois{janvier=1,fevrier=2,mars=3,avril=4,mai=5,juin=6,juillet=7,aout=8,septembre=9,octobre=10,novembre=11,decembre=12};

//Fonctions périphérique
void affichejour(jour x);

//Bloc principal
int main() {
/* GROS BORDEL
Rendezvous R[12][31];
//Initialisation du tableau à faire
Rendezvous x=nouveaurendezvous();
afficherendezvous(x);
enregistrer(x);
x=nouveaurendezvous();
enregistrer(x);
mesrendezvous();
*/

//Debug de affiche jour
jour debug;
printf("Entrez un jour au format: NumeroDuJour NomDuJour\n");
scanf("%d %c",&debug);
affichejour(debug);

printf("Appuyez sur Entrer pour continuer...\n");
getchar();
getchar();
return 0;
}

void affichejour(jour x) {
char ret = x.jnom;
printf("Ha: %c\n",ret);
}

le truc c'est que je ne sais pas comment appelé la structure entant que parametre dans une fonction!!!
Pouvez vous m'aider svp???
Merciiii!!!!!

4 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
21 févr. 2008 à 21:25
Bonjour,

Comme n'importe quel autre type en fait...

void afficherHeure( heure h )
{
   printf( "Il est %d:%d", h.h, h.hm );
}


Ne pas oublier cependant que lors du passage en paramètre le C fait toujours une copie.

Pour l'utilisation:
heure monHeure = { 21, 28 };

afficherHeure( monHeure );


M.
0
sassouki2 Messages postés 18 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 8 avril 2009
21 févr. 2008 à 21:55
slt,
tu peux déclarer une variable de type "la structure que tu veux passer en param dans une fonction" et tu fais passer


cette variable en param de la fonction


eske c claire??????????
0
Merci beaucoup. cependant j'ai une autre question. la foncton affiche date, je dois la conditionner comme la faonction affiche heure?

le h.h c un pointeur ?
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
24 févr. 2008 à 16:16
Re bonjour,

typedef struct
{
   int h;
   int hm;
} heure; 

heure monHeure;

monHeure.h = 2;
monHeure.hm = 34;


h est un int.
hm est un int
monHeure est un heure

Pour que h.h soit un pointeur il faudrait la déclaration suivante:
typedef struct
{
   int *h;
   int hm;
} heure; 


Pour ce qui est de l'affichage d'une date je ferais une fonction similaire.
void afficherDate( date uneDate );
ou
void afficherDate( date *pUneDate );
Si toutefois tu souhaites un passage du paramètre par pointeur.


Il y a un petit blême dans le code initial dans
//Debug de affiche jour
jour debug;
printf("Entrez un jour au format: NumeroDuJour NomDuJour\n");
scanf("%d %c",&debug);
affichejour(debug); 

On ne peut utiliser le scanf de cette manière, il faut obligatoirement préciser des paramètres distinct pour récupérer chaque valeur. Comme suit:
scanf( "%d %c", &debug.j, &debug.jnom );


M.
0
salut je m'appelle lioyan
je débute en programmation surtout en langage C. jai déjà fait d'autres langages tels que pascal...
Bref, jai téléchargé DEV-CPP mais de fois je n'arrive pas à compiller surtout apres avoir mis
void main()
{ int ou float ...........;
il refuse de compiler alors je ny comprends rien pourtant avec turbo Cpp le meme code passe tres bien.
svp aidez moi
0
mansas87 Messages postés 23 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 31 août 2009 > lioyan
2 mars 2008 à 11:07
monsieur Lionel fallait ouvrir une autre duscussion!!!!pour ta reponse, avec dev, tu ne peut pas typer la fonction main donc au debut ecris juste main(); cela est du au fait que dev utilise un compilateur c++ alors que toi tu fais un prg c.
essaye seulement avec main(); tu veras...
0