begin process at 2012 02 08 10:26:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > CLASSE FILE UTILISANT UN TABLEAU

CLASSE FILE UTILISANT UN TABLEAU


 Description

donc voila c un exemple de File (FIFO)
principe: premier entré, premier sorti

Source

  • c_file.h:
  • #ifndef c_fileH
  • #define c_fileH
  • class c_file
  • {
  • public:
  • c_file();
  • ~c_file();
  • void enfiler(long quoi);
  • bool defiler(long &ou);
  • private:
  • long *tab;
  • long *tab2;
  • long taillefile;
  • };
  • //---------------------------------------------------------------------------
  • #endif
  • c_file.cpp:
  • #pragma hdrstop
  • #include "c_file.h"
  • c_file::c_file()
  • {
  • taillefile=0;
  • tab=new long[taillefile];
  • }
  • void c_file::enfiler(long quoi)
  • {
  • tab2=new long[taillefile];
  • for(long i=0;i<taillefile;i++) //on recopie le tableau dans un autre
  • {
  • tab2[i]=tab[i];
  • }
  • delete tab; //on libere l espace du tableau...
  • taillefile++;
  • tab=new long[taillefile]; //pour en faire un d une case de plus
  • for(long i=0;i<taillefile-1;i++) // et on recupere notre ancien tableau
  • {
  • tab[i]=tab2[i];
  • }
  • delete tab2;
  • tab[taillefile-1]=quoi;
  • }
  • bool c_file::defiler(long &ou)
  • {
  • bool retour=false;
  • if(taillefile>0)
  • {
  • ou=tab[0];
  • tab2=new long[taillefile-1];
  • for(long i=1;i<taillefile;i++) //on recopie le tableau dans un autre
  • {
  • tab2[i-1]=tab[i];
  • }
  • delete tab; //on libere l espace du tableau...
  • taillefile--;
  • tab=new long[taillefile]; //pour en faire un d une case de plus
  • for(long i=0;i<taillefile;i++) // et on recupere notre ancien tableau
  • {
  • tab[i]=tab2[i];
  • }
  • delete tab2;
  • retour=true;
  • }
  • return retour;
  • }
  • c_file::~c_file()
  • {
  • delete tab;
  • }
  • //---------------------------------------------------------------------------
  • #pragma package(smart_init)
  • application.cpp:
  • #pragma hdrstop
  • //---------------------------------------------------------------------------
  • #pragma argsused
  • #include <iostream>
  • using namespace std;
  • #include "c_file.h"
  • int main(int argc, char* argv[])
  • {
  • short choix;
  • long temp;
  • c_file o_file;
  • do{
  • cout<<"1.Enfiler"<<endl;
  • cout<<"2.Defiler"<<endl;
  • cout<<"3.Quitter"<<endl;
  • cout<<"Choix: ";
  • cin>>choix;
  • if(choix==1)
  • {
  • cout<<"Entrez la valeur a enfiler: ";
  • cin>>temp;
  • o_file.enfiler(temp);
  • }
  • if(choix==2)
  • {
  • if(o_file.defiler(temp))
  • cout<<"Valeur defilee :"<<temp<<endl;
  • else
  • cout<<"La file est vide"<<endl;
  • }
  • }while(choix!=3);
  • return 0;
  • }
  • //---------------------------------------------------------------------------
c_file.h:


#ifndef c_fileH
#define c_fileH

class c_file
{
        public:
                c_file();
                ~c_file();
                void enfiler(long quoi);
                bool defiler(long &ou);
        private:
                long *tab;
                long *tab2;
                long taillefile;
};

//---------------------------------------------------------------------------
#endif






c_file.cpp:


#pragma hdrstop

#include "c_file.h"
c_file::c_file()
{
        taillefile=0;
        tab=new long[taillefile];
}

void c_file::enfiler(long quoi)
{
        tab2=new long[taillefile];
        for(long i=0;i<taillefile;i++)  //on recopie le tableau dans un autre
        {
                tab2[i]=tab[i];
        }
        delete tab;   //on libere l espace du tableau...
        taillefile++;
        tab=new long[taillefile]; //pour en faire un d une case de plus
        for(long i=0;i<taillefile-1;i++)  // et on recupere notre ancien tableau
        {
                tab[i]=tab2[i];
        }
        delete tab2;
        tab[taillefile-1]=quoi;
}

bool c_file::defiler(long &ou)
{
        bool retour=false;
        if(taillefile>0)
        {
                ou=tab[0];
                tab2=new long[taillefile-1];
                for(long i=1;i<taillefile;i++)  //on recopie le tableau dans un autre
                {
                        tab2[i-1]=tab[i];
                }
                delete tab;   //on libere l espace du tableau...
                taillefile--;
                tab=new long[taillefile]; //pour en faire un d une case de plus
                for(long i=0;i<taillefile;i++)  // et on recupere notre ancien tableau
                {
                        tab[i]=tab2[i];
                }
                delete tab2;
                retour=true;
        }
        return retour;
}

c_file::~c_file()
{
        delete tab;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)


 
application.cpp:


#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
using namespace std;
#include "c_file.h"

int main(int argc, char* argv[])
{
        short choix;
        long temp;
        c_file o_file;
        do{
                cout<<"1.Enfiler"<<endl;
                cout<<"2.Defiler"<<endl;
                cout<<"3.Quitter"<<endl;
                cout<<"Choix: ";
                cin>>choix;
                if(choix==1)
                {
                        cout<<"Entrez la valeur a enfiler: ";
                        cin>>temp;
                        o_file.enfiler(temp);
                }
                if(choix==2)
                {
                        if(o_file.defiler(temp))
                        cout<<"Valeur defilee :"<<temp<<endl;
                        else
                        cout<<"La file est vide"<<endl;
                }

        }while(choix!=3);
        return 0;
}
//---------------------------------------------------------------------------
 



 Sources du même auteur

CLASSE PILE UTILISANT UN TABLEAU
VOIE PARALLELE COUPLEUR MC 68230 IMPRIMANTE SOUS LINUX
CALCUL PUISSANCE PAR FONCTION RECURSIVE
CALCUL FACTORIEL PAR FONCTION RECURSIVE
TRI DE FICHES

 Sources de la même categorie

Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10
Source avec Zip PETITE CLASSE DE GESTION DES PROCESSUS SOUS WINDOWS par wisar
Source avec Zip KEYLOGGER AVEC NOM DU PROCESSUS ET DE LA FENETRE QUI A LE FO... par wisar
Source avec Zip LINUX USB BOOT LEGER par patatalo

Commentaires et avis

Commentaire de djl le 22/04/2004 20:27:53

pas mal, ca a tj un avantage de redefinir ses propres classes conteneur (rien que pour la vitesse)


pour  une utilisation plus sur rajoute le constructeur par copie et l'operateur =

remarque: pourquoi ne  pas l'avoir fait en generique ?

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales