Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "stdlib.h" //en cas d'appels system
- #include "string.h" //en cas de chaînes
- #include "ctype.h" //pour toupper
- struct Gus
- {
- char *pnom;
- int indv;
- int dep;
- char tel[13];
- };
- struct Ville
- {
- char *pville;
- int nbgus;
- };
- void main()
- {
- Gus *TG[50];
- Ville *TV[50];
- int nbp=0; //nombre de personnes
- int nbv=0; //nombre de villes
- char code;
- char zl[16]; //zone de lecture pour nom, ville et tel
- int Tind[50]; //Tableau d'indice
- int i,j,c,ipp;
- int RECHNOM(char[],Gus*[],int);
- int RECHVIL(char[],Ville*[],int);
- void LIBER(Ville*[],Gus*[],int,int);
- printf("*****************************************\n\n");
- printf("* REPERTOIRE TELEPHONIQUE METROPOLITAIN *\n\n");
- printf("*****************************************\n\n");
- printf("VEUILLEZ SAISIR UN CODE EVENEMENT :\n\n");
- printf("I - INSCRIPTION D'UNE PERSONNE\n");
- printf("S - SUPPRESSION D'UNE PERSONNE\n");
- printf("C - CONSULTATION CONCERNANT UNE PERSONNE\n");
- printf("V - VISUALISATION DES VILLES REFERENCEES\n");
- printf("A - AFFICHAGE DU REPERTOIRE\n");
- printf("Q - ARRET DU PROGRAMME\n");
- fflush(stdin);
- code=toupper(getchar());
- system("cls");
- while (code!='Q')
- {
- switch(code)
- {
- case 'I':
- printf("ENTREZ UN NOM :\n");
- fflush(stdin);
- gets(zl);
- for(i=0;i<strlen(zl);i++)
- zl[i]=toupper(zl[i]);
- i=RECHNOM(zl,TG,nbp);
- if(i==-1) //nouveau
- {
- for(c=nbp-1;(c>=0)&&strcmp(zl,TG[c]->pnom)<0;c=c-1)
- TG[c+1]=TG[c];
- c+=1;
- TG[c]=(Gus*)malloc(sizeof(Gus));
- TG[c]->pnom=strdup(zl);
- printf("ENTREZ UNE VILLE :\n");
- fflush(stdin);
- gets(zl);
- for(i=0;i<strlen(zl);i++)
- zl[i]=toupper(zl[i]);
- j=RECHVIL(zl,TV,nbv);
- if(j==-1)
- {
- printf("\n- NOUVELLE VILLE -\n\n");
- TV[nbv]=(Ville*)malloc(sizeof(Ville));
- TV[nbv]->pville=strdup(zl);
- TV[nbv]->nbgus=1;
- TG[c]->indv=nbv;
- nbv++;
- }
- else
- {
- TV[j]->nbgus+=1;
- TG[c]->indv=j;
- }
- printf("ENTREZ UN DEPARTEMENT :\n");
- scanf("%d",&TG[c]->dep);
- printf("ENTREZ UN NUMERO DE TELEPHONE :\n");
- fflush(stdin);
- gets(zl);
- strcpy(TG[c]->tel,zl);
- printf("\n- INSCRIPTION EFFECTUEE -\n\n");
- nbp++;
- }
- else
- {
- printf("\n- NOM DEJA ENREGISTRE -\n\n");
- }
- system("pause");
- system("cls");
- break;
- case 'S':
- printf("ENTREZ UN NOM :\n");
- fflush(stdin);
- gets(zl);
- for(i=0;i<strlen(zl);i++)
- zl[i]=toupper(zl[i]);
- i=RECHNOM(zl,TG,nbp);
- if(i==-1)
- {
- printf("\n- NOM INCONNU -\n\n");
- break;
- }
- TV[TG[i]->indv]->nbgus--;
- if(TV[TG[i]->indv]->nbgus==0)
- printf("\n- CETTE VILLE : %s NE SERA PLUS REFERENCEE -\n\n",TV[TG[i]->indv]->pville);
- free(TG[i]->pnom);
- free(TG[i]);
- while(i<nbp)
- {
- TG[i]=TG[i+1];
- i++;
- }
- printf("\n- SUPPRESSION EFFECTUEE : %s -\n\n",zl);
- nbp--;
- system("pause");
- system("cls");
- break;
- case 'C':
- printf("ENTREZ UN NOM :\n");
- fflush(stdin);
- gets(zl);
- for(i=0;i<strlen(zl);i++)
- zl[i]=toupper(zl[i]);
- i=RECHNOM(zl,TG,nbp);
- if(i==-1)
- {
- printf("\n- NOM INCONNU -\n\n");
- break;
- }
- printf("\nNom : %s\nVille : %s\nDepartement : %d\nNumero de telephone : %s\n\n",TG[i]->pnom,TV[TG[i]->indv]->pville,TG[i]->dep,TG[i]->tel);
- system("pause");
- system("cls");
- break;
- case 'V':
- if(nbp==0)
- {
- printf("\n- REPERTOIRE VIDE -\n\n");
- break;
- }
- for(c=0,j=0;j<nbv;j++)
- {
- if(TV[j]->nbgus>0)
- {
- Tind[c]=j;
- c++;
- }
- }
- for(i=0;i<c;i++)
- {
- for(ipp=i,j=i+1;j<c;j++)
- {
- if(strcmp(TV[Tind[j]]->pville,TV[Tind[ipp]]->pville)<0)
- ipp=j;
- }
- printf("\n%s avec %d personnes y residant\n\n",TV[Tind[ipp]]->pville,TV[Tind[ipp]]->nbgus);
- Tind[ipp]=Tind[i];
- }
- system("pause");
- system("cls");
- break;
- case 'A':
- if(nbp==0)
- {
- printf("\n- REPERTOIRE VIDE -\n\n");
- break;
- }
- i=0;
- printf("NOM : VILLE : DEPARTEMENT : NUMERO DE TELEPHONE :\n");
- printf("_________________________________________________________________\n");
- printf("- %c :\n",TG[i]->pnom[0]);
- printf("%-10s %-15s %-16d %-12s\n",TG[i]->pnom,TV[TG[i]->indv]->pville,TG[i]->dep,TG[i]->tel);
- for(i+=1;i<nbp;i++)
- {
- if(TG[i]->pnom[0]==TG[i-1]->pnom[0])
- printf("%-10s %-15s %-16d %-12s\n",TG[i]->pnom,TV[TG[i]->indv]->pville,TG[i]->dep,TG[i]->tel);
- else
- {
- printf("- %c :\n",TG[i]->pnom[0]);
- printf("%-10s %-15s %-16d %-12s\n",TG[i]->pnom,TV[TG[i]->indv]->pville,TG[i]->dep,TG[i]->tel);
- }
- }
- system("pause");
- system("cls");
- break;
- }
- printf("\nVEUILLEZ SAISIR UN CODE EVENEMENT :\n\n");
- printf("I - INSCRIPTION D'UNE PERSONNE\n");
- printf("S - SUPPRESSION D'UNE PERSONNE\n");
- printf("C - CONSULTATION CONCERNANT UNE PERSONNE\n");
- printf("V - VISUALISATION DES VILLES REFERENCEES\n");
- printf("A - AFFICHAGE DU REPERTOIRE\n");
- printf("Q - ARRET DU PROGRAMME\n");
- fflush(stdin);
- code=toupper(getchar());
- system("cls");
- }
- LIBER(TV,TG,nbv,nbp);
- }
- int RECHNOM(char nom[],Gus *TG[],int nbp)
- {
- int i;
- for(i=0;i<nbp;i++)
- {
- if(strcmp(nom,TG[i]->pnom)==0)
- return i;
- }
- return -1;
- }
- int RECHVIL(char ville[],Ville *TV[],int nbv)
- {
- int j;
- for(j=0;j<nbv;j++)
- {
- if(strcmp(ville,TV[j]->pville)==0)
- return j;
- }
- return -1;
- }
- void LIBER(Ville *TV[],Gus *TG[],int nbv,int nbp)
- {
- int i;
- for(i=0;i<nbp;i++)
- {
- free(TG[i]->pnom);
- free(TG[i]);
- }
- for(i=0;i<nbv;i++)
- {
- free(TV[i]->pville);
- free(TV[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement