Vous êtes sur la page 1sur 16

#include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.

h> typedef struct joueur { char nom[20]; char prenom[20]; char position; int valeur[10]; struct joueur *suiv; }joueur; joueur *tete; joueur *p,*q,*d,*nouv;

int teste (char t1[20],char t2[20])/*esq les tableau sont meme*/ { int i=0; if(strlen(t1)!=strlen(t2)) return 0; else { while(t1[i]==t2[i]) { i++; } if(i>=strlen(t1)) return 1; else return 0; } } void change_M(char t[20])/*changer au ma juscules*/ { int i; for(i=0;i<20;i++) { if(t[i]>='a' && t[i]<='z') { t[i]=t[i]-32; } } }

int teste2(char t[20]) { int i=0;int l=0;

while(t[i]==' ') { i++; } if(t[i]>='A' && t[i]<='Z' || t[i]== ' ') { l=1; } return l; }

void aff()/*pour l'affichage de toutes l'equipe*/ { joueur *f; f=tete; while(f != NULL) { printf("%s",f->nom ); printf("\n"); printf("%s",f->prenom); printf("\n"); printf("%c",f->position); printf("\n"); printf("%s $",f->valeur); printf("\n\n\n"); f=f->suiv; } }

int exist(char n[20],char pos) { int l; joueur*s; s=tete; int k=1; while( s!= NULL && s->pos ition != pos ) { s=s->suiv; } if(s==NULL) l=0; else { while(s!=NULL && s->p osition == pos && k!= 0) { if(teste (s->nom, n)==1) {

l=1; k=0; } else s=s->suiv; } } return l; }

int isalpha(int x); int isalnum(int x); int test_val(char t[10])/*es q c'est un valeur ou nn*/ { int i; int k=1; for(i=0;i<strlen(t);i++) { if( isalpha(t[i]) || !isalnum(t[i])) k=0; } return k; } int zero(char t[10])/*pour eliminer les zero qui ne signifer rien*/ { int i=0; int l; l=strlen(t); while(t[0]=='0') { for(i=0;i<=s trlen(t);i++) { t[i]=t[i+1]; t[strlen(t)] =NULL; } } l=strlen(t); return l; } int compare( char t1 [10],char t2[10])

{ int i; int j=0; int k=0; if(s trlen(t1)<strlen(t2)) retu rn 1; else { if(strlen(t1)> strlen(t2)) return 0; else { while(k==0) { if(t1[j]<t2[j]) { return 1; k=1; } else { if(t1[j]>t2[j]) { return 0; k=1; } else j++; } if(j== strlen(t1)&& k==0) {

return 1; k=1; }

} } } }

void quiter()/*pour quiter le prgm et liberer l'espace memoire*/ { p=tete; while(tete != NULL) { tete=tete->suiv; free(p); p=tete; } }

void inser()/*pour l'insertion*/ { char n[20]; char pre[20]; char pos; int val[10]; int i;

printf("\n\ndonnez le nom de la famille : "); fflush(stdin); scanf("%s",&n); change_M(n); while(!teste2(n)) { printf("\nverfie votre nom!!\n"); fflush(stdin); scanf("%s",&n); change_M(n);

printf("donnez votre prenom : "); scanf("%s",&pre);

change_M(pre); while(!teste2(pre)) { printf("\nverifie votre prenom !!!\n"); scanf("%s",&pre); change_M(pre); }

printf("donnez la position : "); fflush(stdin); //vider le buffer scanf("%c",&pos); if((pos>='a' && pos <='z')||(pos>=' A' && pos<='Z')) { if(pos>='a' && pos <='z') pos=pos-32; while(pos !='G' && pos !='D' && pos!='M' && pos != 'A') { printf("erreur !!\n"); fflush(stdin); scanf("%c",&pos); if(pos>='a' && pos <='z ') pos=pos-32; } }

while(exist(n,pos)==1)/*po ur connais esq le joueur exist dans l'equipe ou nn*/ { printf("erreur ce nom exist deja changer la position!!\n");

fflush(stdin); vider le buffer

//

scanf("%c",&pos); if((pos>='a' && pos <='z')||(pos>='A' && pos<='Z')) { if(pos>='a' && pos <='z') pos=pos-32; while(pos != 'G' && pos !='D' && pos!='M' && pos != 'A') { printf(" erreur !!\n"); fflush(s tdin); scanf("% c",&pos); if(pos> ='a' && pos <='z') pos=pos -32; } } }

printf("donnez la valeur :") ; fflush(stdin); gets(val); while(test_val(val) ==0) { printf("ce n'est pas un nombre repeter !\n"); fflush(stdin); gets(val); } zero(val);

if(tete == NULL) { tete=(joueur *)malloc(si zeof(joueur)); strcpy(tete->nom,n); strcpy(tete->prenom,pre) ; tete->position=pos;

strcpy(tete->valeur,val) ; tete->suiv=NULL; } else { if(pos =='A') { p=tete; while(p!= NULL) { q=p; p=p->suiv; } nouv=(joueur *)mallo c(sizeof(joueur)); strcpy(nouv->nom,n); strcpy(nouv->prenom, pre); nouv->position=pos; strcpy(nouv->valeur, val); nouv->suiv=NULL; q->suiv=nouv; } if(pos == 'G') { nouv=(joueur *)ma lloc(sizeof(joueur)); strcpy(nouv->nom, n); strcpy(nouv->pren om,pre); nouv->position=po s; strcpy(nouv->vale ur,val); p=tete; if(tete->position == 'G') { while(p!= NULL && p->position == 'G') { q=p; p=p->suiv; } nouv->suiv=q->sui v; q->suiv=nouv; } else { nouv->suiv=tete;

tete=nouv; } } if(pos == 'D') { nouv=(joueur *)ma lloc(sizeof(joueur)); strcpy(nouv->nom, n); strcpy(nouv->pren om,pre); nouv->position=po s; strcpy(nouv->vale ur,val); p=tete;

if(p->position = = 'M' || p->position =='A') { nouv->suiv=tet e; tete=nouv; } else { while(p!= NU LL && (p->position == 'D' || p->position == 'G')) { q=p; p=p>suiv; } nouv-> suiv=q->suiv; q->sui v=nouv; }

} if(pos =='M') { nouv=(joueur *)ma lloc(sizeof(joueur)); strcpy(nouv->nom, n); strcpy(nouv->pren om,pre); nouv->position=po s; strcpy(nouv->valeu

r,val); d=tete; if(tete->position =='A') { nouv->suiv=te te; tete=nouv; } else { while(d!= NUL L &&(d->position !='A')) { q=d; d=d->suiv ; } nouv->suiv=q>suiv; q->suiv=nouv; } } }

void supp()/*pour faire la suppression*/ { char n[20]; int k=0; int l=0; int e=0; char pos; printf("donnez le nom de la famille : "); scanf("%s",n);while (get char () != '\n'); change_M(n); if(teste2(n)==1) { p=tete; q=tete; if(p == NULL)

printf(" l'equipe est vide !\n"); else { while(p != NULL ) { if( teste(n,p->nom) == 1) { k++; printf("%c \n",p->position); } p=p->suiv; }

p=tete; if( k==0) printf(" le joueur nexiste pas !!! \n"); else { if(k==1) { if(teste(n,tete->nom)== 1) { tete=tete->suiv; free(p); } else { while( teste(n,p->nom)!=1 ) {

q=p; p=p->suiv; } q->suiv =p->suiv; free(p); } } else { p=tete; printf(" donnez la position du joueur que vous voulez le suppr : ");

scanf("%c",&pos); if(pos>='a' && pos <='z') { pos=pos-32; }

while( pos!='G' && pos != ' D' && pos != 'M' && pos != 'A') { printf("erreur de positi on !!?\n"); fflush(stdin); scanf("%c",&pos); if(pos>='a' && pos <='z') { pos=pos-32; } }

if(tete->position == pos && teste(n,tete->nom)==1 ) {

tete=tete->suiv; free(p); } else { p=tete;

while(p!=NULL && e==0) { if(teste(n,p->nom)==1 && p->position== pos) e=1; else{ q=p; p=p->suiv; } } if(p==NULL) printf("le joueur n'existe pas !!"); else { q->suiv=p->suiv; free(p); } } } }

} } else printf("erreur verifie votre 1er caractre \n" ); }

void recherche_val(char val[10])/*pou faire une recherche par valeur*/ { int l=1; p=tete; while(p != NULL) { if ( compare(p->valeur,val)==1 ) { puts(p->nom ); printf("\n"); puts(p->prenom); printf("\n"); printf("%c",p->position); printf("\n"); printf("%s",p->valeur); printf("\n\n"); l=2; } p=p->suiv; } if(l==1) printf("il ya pas aucun joueur ca valeur <= "); }

void recherche_nom()/*pour afficher toutes les joueur avec ce nom de la famille s'il existe*/ { char n[20]; int k=0; printf("donnez le nom de la famille : "); scanf("%s",&n); p=tete; while(p!=NULL) { if(teste(n,p->nom)==1) { k=1; printf("\n voila votre joueur : \n %s \n %s \n %c \n %s",p->nom,p->pren om,p->position,p->valeur); }

p=p->suiv; } if(k==0) printf("le joueur nexiste pas !! "); }

void main() { char x;char val[10]; printf("le cmnds sont : \n I pour iserer \n S pour supprimer\n A pour laffic hage de toute lequipe\n R pour la recherche par valeur\n E la recherche par nom \n Q pour quiter!!\n\n"); x='V'; while(x != 'Q') { printf("donnez la cmnd que vous voulez :\n"); fflush(stdin); scanf("%c",&x); if(x>='a' && x<='z') { x=x-32; } while( !isalpha(x) || x != 'I' && x != 'S' && x != 'A' && x != 'R' && x != 'E' && x != 'Q') {

/*pour tester la cmnd*/ printf("erreur de cmnd repeter !!\n"); fflush(stdin); scanf("%c",&x); if(x>='a' && x<='z') { x=x-32; } } if(x =='I') inser(); if(x=='S') supp(); if(x=='A') aff(); if(x=='R') {

printf("donnez la valeur :"); fflush(stdin); gets(val); while(test_val(val) ==0) { printf("ce n'est pas un nombre repet er !\n"); fflush(stdin); gets(val); } zero(val); recherche_val(val); } if(x=='E') recherche_nom(); if(x=='Q') quiter();

} }