Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- /* À COMPLÉTER PAR LES EN-TÊTES (PROTOTYPES) DES SOUS-PROGRAMMES
- * DE MANIPULATION DE LA FIFO */
- #define nmax 100
- /* On crée la file de type file */
- typedef struct {
- int f[nmax]; /* la file */
- int tete; /* la tête de la file */
- int queue; /* la queue de la file */
- int taille; /* la taille de la file */
- } File ;
- void initialiser (File * uneFile);
- int enfiler (File * uneFile, int e);
- int defiler(File * uneFile, int * e);
- void afficher(File * uneFile);
- int main() {
- int op = 0;
- int nb_item;
- /* À COMPLÉTER PAR LA DÉCLARATIONS DE NOUVELLES VARIABLES */
- /* POUR REPRÉSENTER LA FIFO */
- int x;
- File uneFile;
- /* boucle du menu */
- do {
- printf("terminer (0) \n");
- printf("initialiser (1) \n");
- printf("enfiler (2) \n");
- printf("défiler (3) \n");
- printf("afficher (4) \n");
- /* boucle de saisie de l'opération à effectuer */
- do {
- printf("\nopération ? \n");
- nb_item = scanf("%d", &op);
- while( getchar() != '\n' ){
- /* empty */;
- }
- } while ( nb_item != 1 );
- printf("opération choisie : %d\n",op);
- /* traitement de l'opération choisie */
- switch (op) {
- case 0 : printf("Au revoir \n\n");
- break;
- case 1 : printf("initialiser \n\n");
- /* initialiser(& uneFile); */
- initialiser(&uneFile);
- break;
- case 2 : printf("enfiler \n\n");
- printf("Quelle valeur enfiler ?");
- scanf("%d", &x);
- enfiler(&uneFile, x);
- break;
- case 3 : printf("défiler \n\n");
- defiler(&uneFile, &x);
- //printf("On a défiler : %d\n",&x);
- break;
- case 4 : printf("afficher \n\n");
- afficher(&uneFile);
- break;
- default : printf(" \n\n\007opération non conforme\n\n");
- break;
- }
- } while (op != 0);
- return 0;
- }
- /* À COMPLÉTER AVEC L'IMPLANTATION DES SOUS-PROGRAMMES DE MANIPULATION
- * DE LA FIFO */
- void initialiser (File * uneFile){
- uneFile->tete=0;
- uneFile->queue=-1;
- uneFile->taille=0;
- }
- int enfiler (File * uneFile, int e){
- /* La file est pleine */
- if(uneFile->taille == nmax){
- printf(" La file est pleine");
- return -1;
- }
- /* On enfile normalement */
- else{
- uneFile->queue=(uneFile->queue+1)%nmax;
- uneFile->f[uneFile->queue]=e;
- uneFile->taille++;
- }
- return 0;
- }
- int defiler(File * uneFile, int * e){
- /* La file est vide */
- if(uneFile->taille == 0){
- printf("On ne défile pas la file vide");
- return -1; /* pas sur */
- }
- /* On defile normalement */
- else{
- // e->(uneFile->f[uneFile->tete]);
- uneFile->tete= (uneFile->tete +1)%nmax;
- uneFile->taille-=1;
- }
- return 0;
- }
- void afficher(File * uneFile){
- int i; /* indice de boucle */
- /* La file est vide */
- if(uneFile->taille==0){
- printf("Erreur : La file est vide");
- }
- else if(uneFile->queue < uneFile->tete){
- for(i=uneFile->tete;i<=nmax;i++){
- printf("%d\n",uneFile->f[i]);
- }
- for(i=0;i<=uneFile->queue;i++){
- printf("%d\n",uneFile->f[i]);
- }
- }
- else{
- for(i=uneFile->tete;i<=uneFile->queue;i++){
- printf("%d\n",uneFile->f[i]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement