Un centre d’immatriculation au Maroc souhaite automatiser l’enregistrement des véhicules (Neuf et occasion) via un système informatique. Ce système doit assurer les taches suivantes : l’enregistrement des véhicules, l’élaboration des cartes grises, ….etc. On vous propose de réaliser cette gestion en utilisant un tableau de structures. Chaque véhicule est identifié par les informations suivantes : Nom, prénom et CIN du propriétaire, Marque, Model, Carburant (gasoil ou essence), état (neuf ou occasion), puissance fiscale et Immatriculation. Ces informations représentent les champs des structures suivantes.
typedef struct {
int mois ;
int annee ;
} Model ;
typedef struct {
char nom_prenom[30] ;
char CIN[20] ;
char marque[20] ;
Model mod ;
char carburant[15] ;
char etat[15] ;
int fiscale ;
char Matricule[40] ;
} Vehicule ;
#define max 100
=> Les fonctions à rédiger sont les suivantes :
1) void saisir (Vehicule V[max] , int N ) permet de saisir les informations de N véhicules.
2) void afficher (Vehicule V[max] , int N ) permet d’afficher la liste de N véhicules qui sont enregistrés dans le tableau V.
3) int rechercher (Vehicule V[max] , int N , char Matricule [40] ) cette fonction
permet de rechercher un véhicule identifié par la matricule m dans le tableau V contenant N véhicules et retourne l’indice 1 dans le cas de réussite et 0 dans le cas inverse.
4) void ajouter_vehicule (Vehicule V[max] , int * N , Vehicule vc ) permet d’ajouter un véhicule vc au tableau V de N véhicules. Dans le cas où le véhicule existe déjà dans le tableau, il faut faire une mise à jour concernant le nouveau propriétaire (nom_prénom et CIN).
5) Dans le cadre de la protection de l’environnement contre la pollution et la réduction du nombre des accidents, une décision est prise pour arrêter les véhicules qui ont dépassés 25 ans de circulation par rapport à la date précisée.
void supprimer (Vehicule V[max] , int * N , int annee ) cette fonction permet de supprimer les véhicules qui ont dépassés 25 ans de circulation.
Correction
1)
void saisir (Vehicule V[max],int N){
int i;
for ( i=0; i<N ; i++)
{
printf("Entrer Nom et prenom:"); scanf("%s",V[i].nom_prenom);
printf("Entrer CIN: "); scanf("%s",V[i].CIN);
printf("Entrer marque: "); scanf("%s",V[i].marque);
printf("Entrer model \n");
printf(" mois: "); scanf("%d",&V[i].mod.mois);
printf(" annee: "); scanf("%d",&V[i].mod.annee);
printf("Carburant: "); scanf("%s",V[i].carburant);
printf("Etat : "); scanf("%s",V[i].etat);
printf("Nb cv: "); scanf("%d",&V[i].fiscale);
printf("Matricule :"); scanf("%s",V[i].Matricule);
}
}
2)
void afficher (Vehicule V[max],int N){
int i;
for ( i=0; i<N ; i++)
{ printf("Nom et prenom: %s\n",V[i].nom_prenom);
printf("CIN: %s\n",V[i].CIN);
printf("Model: %d/%d \n",V[i].mod.mois,V[i].mod.annee);
printf("Carburant: %s \n",V[i].carburant);
printf("Etat : %s \n",V[i].etat);
printf("Nb cv: %d \n",V[i].fiscale);
printf("Matricle:%s \n",V[i].Matricule);
printf("**************************\n");
}
}
3)
int rechercher (Vehicule V[max], int N,char m[40])
{ int i,existe=0;
for ( i=0; i<N ; i++) {
if( strcmp(V[i].Matricule,m)==0)
existe=1;
}
return existe;
}
4)
void ajouter_vehicule(Vehicule V[max],int *N,Vehicule vc)
{ int i;
if(rechercher(V,*N,vc.Matricule)== 1)
{ for( i=0; i < *N; i++)
{ if( strcmp(V[i].Matricule,vc.Matricule)==0)
{ strcpy(V[i].nom_prenom,vc.nom_prenom) ;
strcpy(V[i].CIN,vc.CIN);
}
}
}else
{ V[*N] = vc ; (*N)++; }
}
5)
void supprimer (Vehicule V[max],int *N,int annee)
{ int i,j;
for ( i=0; i<*N ; i++)
{if(annee-V[i].mod.annee>=25)
{
for (j=i;j<*N ;j++) V[j] = V[j+1];
(*N)--; i--;
}
}
}