//---------------------------------------------------------------------------
#include <stdio.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
#pragma argsused
// ECRIRE UN PROGRAMME QUI AFFICHE , APPUIE SUR A POUR AJOUTER ET L POUR AFFICHER
// ECRIRE UNE FONCTION QUI PARCOURE L EQUIPE ALORS DE 0 A -1
struct ageequipe{char nom[50] ; int age;} ;
struct membre1
{
struct membre *adresse;
struct membre1 *suivant,*precedant;
};
struct ageequipe *equipe;
struct ageequipe *index[10];
int valeur = 0 ;
void A()
{
if(valeur<10)
{
printf("Entrez le nom du joueur %d :", ++valeur);
scanf("%s",equipe[valeur-1].nom);
printf("Entrez l'age du joueur %d :",valeur);
scanf("%d",&equipe[valeur-1].age);
}else
{
printf("\nIl y a trop de joueur\n\n\n");
}
}
void G(struct ageequipe **e)
{
struct membre1 *tete,*courant,*nouveau;
int i,flag;
if (valeur>0)
{
tete=malloc(sizeof(struct membre1));
tete->adresse=&(*e)[0];
tete->suivant=NULL;
tete->precedant=NULL;
courant=tete;
if(valeur>1)
{
for (i = 1; i <valeur ; i++)
{
flag=0;
courant=tete;
if (((*e)[i].age) <= (tete->adresse->age))
{
nouveau=malloc(sizeof(struct membre1));
nouveau->adresse=&(*e)[i];
nouveau->precedant=NULL;
nouveau->suivant=tete;
tete->precedant=nouveau;
tete=nouveau;
nouveau=NULL;
free(nouveau);
courant=tete;
}
else
{
while ((courant->suivant!=NULL)&&(flag==0))
{
if(((*e)[i].age) <= (courant->adresse->age))
{
nouveau=malloc(sizeof(struct membre1));
nouveau->adresse=&(*e)[i]; //& car adresse est = a l'adresse de e[i]
nouveau->precedant=courant->precedant;
nouveau->suivant=courant;
courant->precedant=nouveau;
nouveau=NULL;
free(nouveau);
flag=1;
}
courant=courant->suivant;
}
if (flag==0)
{
if(((*e)[i].age) <= (courant->adresse->age))
{
nouveau=malloc(sizeof(struct membre1));
nouveau->adresse=&(*e)[i]; //& car adresse est = a l'adresse de e[i]
nouveau->precedant=courant->precedant;
nouveau->suivant=courant;
courant->precedant->suivant=nouveau; // ne pas oublier de changer le pointeur suivant du precedant
courant->precedant=nouveau; //car il pointer sur courant mais doit pointer sur nouveau, et courant-prec
nouveau=NULL; //doit pointer sur nouveau
free(nouveau);
flag=1;
}else
{
nouveau=malloc(sizeof(struct membre1));
nouveau->adresse=&(*e)[i];
nouveau->suivant=NULL;
nouveau->precedant=courant;
courant->suivant=nouveau;
nouveau=NULL; //si pas nouveau=NULL et free, cela ecrase les données de tete ou les donné précedent
free(nouveau);
}
}
}
}
}
courant=tete;
for (i = 0; i < nombre; i++)
{
printf("%s\n",courant->adresse->nom);
courant=courant->suivant;
}
}
tete=NULL;
free(tete);
courant=NULL;
free(courant);
}
void L()
{
int i;
for (i = 0; i < valeur; i++)
{
printf(" Joueur %d\n",i+1);
printf(" Nom: %s\n",equipe[i].nom);
printf(" Age: %d ans\n",equipe[i].age);
}
}
void S ()
{
printf("\n\n");
printf("\t~~ Merci et a bientot ~~");
getchar();
// Effacer l'écran:
// system("cls");
}
int _tmain(int argc, _TCHAR* argv[])
{ char choix;
equipe=NULL;
do
{
fflush(stdin);
printf("Appuyez sur\n");
printf(" A pour ajouter\n");
printf(" L pour lister\n");
printf(" I pour trier par Index\n");
printf(" S pour quitter\n");
printf("Entrez votre choix: ");
scanf("%c",&choix);
if (choix=='A')
{
if(equipe==NULL)
{
equipe=malloc(sizeof(struct ageequipe)*10);
A();
}else
A();
}
else if (choix=='L')
{
L();
}else if (choix=='S')
{
S(&equipe);
}
} while((choix=='A')||(choix=='L')||(choix=='G'));
free(equipe);
getchar();
return 0;
}
//---------------------------------------------------------------------------
Partager