Classe file utilisant un tableau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 461 fois - Téléchargée 30 fois

Contenu du snippet

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

Source / Exemple :


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;
}
//---------------------------------------------------------------------------

A voir également

Ajouter un commentaire

Commentaire

cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
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 ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.