import java.io.*;
import java.lang.*;
import java.util.*;

// \esc{les files repre'sente'es par un tableau voir page \pageref{prog:files-vect}}

class Fil {

  final static int MaxF = 5;

  int         debut;
  int         fin;
  boolean     pleine, vide;
  int         contenu[];    

  Fil () {
    debut = 0; fin = 0;
    pleine = false; vide = true;
    contenu = new int[MaxF];
  } 

  static void FaireFvide (Fil f) {
    f.debut = 0; f.fin = 0;
    f.pleine = false; f.vide = true;
  }

  static int Successeur(int i) {

    return  (i+1) % MaxF;
  }

  static boolean Fvide(Fil f) {

    return  f.vide;
  }

  static boolean Fpleine(Fil f) {

    return  f.pleine;
  }

  static int Fvaleur (Fil f) {

    if (f.vide)
        Erreur ("File Vide.");
    return  f.contenu[f.debut];
  }

  static void Fajouter (int x, Fil f) {
    if (f.pleine)
        Erreur ("File Pleine.");
    f.contenu[f.fin] = x;
    f.fin = Successeur(f.fin);
    f.vide = false;
    f.pleine = f.fin == f.debut;
  }

  static void Fsupprimer (Fil f) {

    if (f.vide)
        Erreur ("File Vide.");
    f.debut =  Successeur(f.debut);
    f.vide = f.fin == f.debut;
    f.pleine = false;
  }

  static void Fimprimer (Fil f) {
    System.out.println ("debut=" + f.debut + ", " +
                        "fin=" + f.fin + "; " +
                        "pleine=" + f.pleine + "; " +
                        "fin=" + f.vide);
    for (int i = 0; i < f.contenu.length; ++i)
        System.out.print (f.contenu[i]);
    System.out.println ();
  }

  static void Erreur (String msg) {
      System.err.println ("test des files: " + msg);
      System.exit (1);
  }

  public static void main(String args[]) {
      
    Fil a = new Fil ();
    Fajouter (1, a);
    Fajouter (2, a);
    Fajouter (3, a);
    Fajouter (4, a);
    Fajouter (5, a);
    Fsupprimer (a);
    Fajouter (6, a);
    Fsupprimer (a);
    Fajouter (7, a);
    Fsupprimer (a);
    Fimprimer (a);
  }
}

