Tp7.c 2.01 KB
#include <stdio.h>
#include <string.h>

#define ContigueLength 512
#define NbChar 32

typedef struct{
    int jour, mois,annee;
}Date;

typedef struct{
    char nom[NbChar], prenom[NbChar], tel[NbChar];
    Date date;
}Personne;

typedef struct{
    Personne listePers[ContigueLength];
    int dernier;
}Annuaire;


void lireDate(Date *date){
    scanf("%d%d%d",&date->jour,&date->mois, &date->annee);
}

void afficheDate(Date date){
    printf("Jour: %d | Mois: %d | Annee: %d\n",date.jour, date.mois, date.annee);
}

int lirePersonne(Personne *pers){
    if(scanf("%s",pers->nom)!=EOF){
        scanf("%s",pers->prenom);
        lireDate(&pers->date);
         scanf("%s",pers->tel);
        return 1;
    }else {
        return 0;
    }
    
//if(scanf("%s")==EOF);    

}

void affichePers(Personne p){
    printf("Nom: %s | Prenom: %s | Tel: %s\n",p.nom, p.prenom, p.tel);
    afficheDate(p.date);
}

void creerAnnuaire(Annuaire *annuaire){
    annuaire->dernier=-1;
    //tq lecture d'une nouvelle personne est possible -> ajoute pers et +1 à annuaire.dernier 
    while((annuaire->dernier < ContigueLength) && (lirePersonne(&annuaire->listePers[(annuaire->dernier)+1])!=0)){
        annuaire->dernier+=1;
    }
}

void afficheAnnuaire(Annuaire annuaire){
    int i;
    for(i = 0; i <= annuaire.dernier; i++){
        affichePers(annuaire.listePers[i]);
        
    }
}

int compareDate(Date d1, Date d2){
    if(d1.annee == d2.annee){
         if(d1.mois == d2.mois){
              if(d1.jour == d2.jour){
                  return 0;
              }else if(d1.jour < d2.jour){
                  return -1;
              }
              
         }else if(d1.mois < d2.mois){
                  return -1;
         }
             
    }else if(d1.annee < d2.annee){
        return -1;
    }
    return 1;
    
}


int main(){
  
   /* Date d;
    lireDate( &d);
    afficheDate(d);
    Personne p;
    lirePersonne(&p);
    affichePers(p);*/
   
    Annuaire annuaire;
    creerAnnuaire(&annuaire);
    afficheAnnuaire(annuaire);
    return 1;
}