int main ( void ) { ELEMENT *tete = NULL, *elem; elem = liste_ajouter ( &tete ); elem->produit_nb = 34; elem->prix = 10.95; liste_afficher ( tete ); elem = liste_ajouter ( &tete ); elem->produit_nb = 12; elem->prix = 9.95; liste_afficher ( tete ); /* Retire un a un les elements de la liste et les detruit: */ vider_liste ( &tete ); liste_afficher ( tete ); return 0; }
int main( int nb_arg , char * tab_arg[] ) { int cle_piste ; piste_t * piste = NULL ; int cle_liste ; /* liste_t * liste = NULL ; */ liste_t liste; char marque ; booleen_t fini = FAUX ; piste_id_t deplacement = 0 ; piste_id_t depart = 0 ; piste_id_t arrivee = 0 ; cell_t cell_cheval ; elem_t elem_cheval ; /*-----*/ if( nb_arg != 4 ) { fprintf( stderr, "usage : %s <cle de piste> <cle de liste> <marque>\n" , tab_arg[0] ); exit(-1); } if( sscanf( tab_arg[1] , "%d" , &cle_piste) != 1 ) { fprintf( stderr, "%s : erreur , mauvaise cle de piste (%s)\n" , tab_arg[0] , tab_arg[1] ); exit(-2); } if( sscanf( tab_arg[2] , "%d" , &cle_liste) != 1 ) { fprintf( stderr, "%s : erreur , mauvaise cle de liste (%s)\n" , tab_arg[0] , tab_arg[2] ); exit(-2); } if( sscanf( tab_arg[3] , "%c" , &marque) != 1 ) { fprintf( stderr, "%s : erreur , mauvaise marque de cheval (%s)\n" , tab_arg[0] , tab_arg[3] ); exit(-2); } /* Init de l'attente */ commun_initialiser_attentes() ; /* Init de la cellule du cheval pour faire la course */ cell_pid_affecter( &cell_cheval , getpid()); cell_marque_affecter( &cell_cheval , marque ); /* Init de l'element du cheval pour l'enregistrement */ elem_cell_affecter(&elem_cheval , cell_cheval ) ; elem_etat_affecter(&elem_cheval , EN_COURSE ) ; /* * Enregistrement du cheval dans la liste */ cell_pid_affecter( &cell_cheval , getpid() ) ; cell_marque_affecter( &cell_cheval , marque ) ; elem_cell_affecter( &elem_cheval , cell_cheval ) ; elem_etat_affecter( &elem_cheval , EN_COURSE ) ; liste_elem_ajouter( &liste, elem_cheval ); printf("AFFICHAGE LISTE MAGGLE\n" ); liste_afficher( &liste ); while( ! fini ) { /* Attente entre 2 coup de de */ commun_attendre_tour() ; /* Verification de letat du cheval si EN_COURSE on avance sinon NON*/ if(elem_etat_lire(elem_cheval) == EN_COURSE){ /* * Avancee sur la piste */ /* Coup de de */ deplacement = commun_coup_de_de() ; #ifdef _DEBUG_ printf(" Lancement du De --> %d\n", deplacement ); #endif arrivee = depart+deplacement ; if( arrivee > PISTE_LONGUEUR-1 ) { arrivee = PISTE_LONGUEUR-1 ; fini = VRAI ; } if( depart != arrivee ) { /* * Si case d'arrivee occupee alors on decanille le cheval existant */ if(piste_cell_occupee( piste ,arrivee)){ liste_elem_decaniller(&liste, chevalExistant ) ; } //printf(" Etat case d'arrivee %i", etatCase ); /* * Deplacement: effacement case de depart, affectation case d'arrivee */ #ifdef _DEBUG_ printf("Deplacement du cheval \"%c\" de %d a %d\n", marque, depart, arrivee ); #endif } } /* Affichage de la piste */ piste_afficher_lig( piste ); depart = arrivee ; } printf( "Le cheval \"%c\" A FRANCHIT LA LIGNE D ARRIVEE\n" , marque ); /* * Suppression du cheval de la liste */ exit(0); }