begin process at 2010 02 10 13:17:59
  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 [C/WIN32/WMI]SAVOIR SI UNE CLASSE COM EST INSTALLÉE par rt15
Source avec Zip Source avec une capture [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE... par deck_bsd
Source avec Zip DÉTECTION DE LANCEMENT D'APPLICATION (WIN32, REGISTERSHELLHO... par buno
Source avec Zip Source avec une capture [C/WIN32] INJECTION DE DLL 2 MÉTHODES (REMOTETHREAD PROPRE &... par deck_bsd
PRODUCER CONSUMER C (WITHIN LINUX) par PCBill

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,624 sec (3)

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