#include #include #include #include class Tfile{ private: double * tab; long taille; long longueurFile; long devant; long derriere; void enleveUnePlaceDevant(void); void faitUnePlaceDerriere(void); Tfile(void); // un constructeur prive!!! public: Tfile(long nbVoulu); ~Tfile(void); int enfile(double valeur); double defile(void); int fileVide(void); void afficherTous(void); }; //--------------------------------------------- int main(){ Tfile F(300); long i; clrscr(); for(i = 0; i < 200; i++) F.enfile(4.0 * i); i = 0; while (! F.fileVide()){ cout << "\n Defile : " << F.defile(); i++; if (i % 10 == 0) getch(); } getch(); return 0; } //--------------------------------------------- Tfile::Tfile(void){ taille = 0 ; tab = 0; longueurFile = 0; devant = -1; derriere = -1; } Tfile::Tfile(long nbVoulu){ taille = 0; tab = 0; longueurFile = 0; devant = -1; derriere = -1; if (nbVoulu > 0) { tab = new double[nbVoulu]; if (tab) taille = nbVoulu; } } Tfile::~Tfile(void) { if (tab) delete[] tab; } int Tfile::fileVide(void){ return longueurFile == 0; } void Tfile::enleveUnePlaceDevant(void){ longueurFile--; if (longueurFile) devant = (devant + 1) % taille; else devant = derriere = -1; } void Tfile::faitUnePlaceDerriere(void){ longueurFile++; derriere = (derriere + 1) % taille; } int Tfile::enfile(double valeur){ faitUnePlaceDerriere(); if (derriere == devant) { cout << "\nprobleme dans Enfile"; return 0; } tab[derriere] = valeur; if (longueurFile == 1) devant = derriere; return 1; } double Tfile::defile(void) { if (! fileVide()) { double elem = tab[devant]; enleveUnePlaceDevant(); return elem; } cout << "\nprobleme dans Defile"; return 0; } void Tfile::afficherTous(void){ for (long i = 0; i < taille; i++) cout << "\ntab[" << i << "] = " << tab[i]; }