begin process at 2012 05 27 14:27:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > CLASSE DE CHAINE DE CARACTERES [DEV-C++]

CLASSE DE CHAINE DE CARACTERES [DEV-C++]


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Niveau :Débutant Date de création :14/08/2002 Date de mise à jour :14/08/2002 14:14:44 Vu :6 039

Auteur : MaYo

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

troisieme exercice de ma vie d'apprenti : creer une classe de stockage de chaines de caracteres et y integrer des fonctions équivalentes à : srtlen, srtcmp, strncmp, strcat, strcpy, strdup.
voilà ma solution :

Source

  • #include <stdlib.h>
  • #include <iostream.h>
  • class Chaine {
  • public:
  • Chaine(); //constructeur de base
  • Chaine ( char a[256] ); //constructeur avec entrée de valeur
  • Chaine ( const Chaine & ) ; // constructeur - duplicateur
  • char contenu[256];
  • void editChaine( char a[256]);
  • void printChaine ();
  • int lChaine (); // calcule la longueur d'une chaîne
  • int compLongChaine ( Chaine , Chaine ); // compare les longueurs de chaines
  • int compCaraChaine ( Chaine , Chaine , int ); // compare les n premier caracteres et renvoie un indication sur celle qui lache en premier
  • void addChaine ( Chaine ); // ajoute une chaîne à la suite d'une autre
  • void cpyChaine ( Chaine ) ; // copy une chaine dans une autre
  • };
  • Chaine::Chaine(){};
  • Chaine::Chaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i]; }
  • Chaine::Chaine( const Chaine & ch1 ) { for (int i=0 ; i<256 ; i++) contenu[i]=ch1.contenu[i]; }
  • void Chaine::editChaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i]; }
  • void Chaine::printChaine() { cout<<contenu<<"\n"; }
  • int Chaine::lChaine() { int i; for (i=0 ; contenu[i] ; i++ ); return i; }
  • int compLongChaine ( Chaine ch1 , Chaine ch2 ) { return ( ch1.lChaine()-ch2.lChaine() ) ; }
  • int compCaraChaine ( Chaine ch1 , Chaine ch2 , int omega )
  • { char res='0'-'0' ;
  • for ( int alpha=0 ; alpha!=omega ; alpha++ )
  • { res += ( ch1.contenu[alpha] - ch2.contenu[alpha] ) ; } ;
  • return res ;
  • }
  • void Chaine::addChaine ( Chaine ch2 )
  • { int j=lChaine();
  • for (int i=lChaine() ; i<256 ; i++ )
  • { contenu[i] = ch2.contenu[(i-j)] ; } ;
  • }
  • void Chaine::cpyChaine ( Chaine ch1 ) { for (int i=0 ; i<256 ; i++ ) contenu[i]=ch1.contenu[i] ; }
  • /****************************** MAIN PROGRAM ********************************/
  • void main ()
  • { Chaine x;
  • Chaine y;
  • x.editChaine("zoby la mouche");
  • y.editChaine("zoby et dede le moustique");
  • x.printChaine();
  • y.printChaine();
  • cout<<"comparaison des longueurs de chaines : "<<compLongChaine( x , y )<<"\n";
  • cout<<"comparasion des 10 premiers caracteres : "<<compCaraChaine( x , y , 10 )<<"\n";
  • x.addChaine ( y );
  • x.printChaine();
  • x.cpyChaine ( y ) ;
  • x.printChaine();
  • Chaine z(x);
  • z.printChaine();
  • system("PAUSE");
  • return 0;
  • }
#include <stdlib.h>
#include <iostream.h>




class Chaine {

public:
       Chaine();                //constructeur de base
       Chaine ( char a[256] );  //constructeur avec entrée de valeur
       Chaine ( const Chaine & ) ; // constructeur - duplicateur
       char contenu[256];
       void editChaine( char a[256]);
       void printChaine ();
       int lChaine ();  // calcule la longueur d'une chaîne
       int compLongChaine ( Chaine , Chaine ); // compare les longueurs de chaines
       int compCaraChaine ( Chaine , Chaine , int ); // compare les n premier caracteres et renvoie un indication sur celle qui lache en premier
       void addChaine ( Chaine ); // ajoute une chaîne à la suite d'une autre
       void cpyChaine ( Chaine ) ; // copy une chaine dans une autre


};

Chaine::Chaine(){};

Chaine::Chaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i]; }

Chaine::Chaine( const Chaine & ch1 ) {  for (int i=0 ; i<256 ; i++) contenu[i]=ch1.contenu[i]; }

void Chaine::editChaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i];  }


void Chaine::printChaine() { cout<<contenu<<"\n"; }


int Chaine::lChaine() { int i; for (i=0 ; contenu[i] ; i++ ); return i; }


int compLongChaine ( Chaine ch1 , Chaine ch2 )  { return ( ch1.lChaine()-ch2.lChaine() ) ; }


int compCaraChaine ( Chaine ch1 , Chaine ch2 , int omega )

    { char res='0'-'0' ;
      for ( int alpha=0 ; alpha!=omega ; alpha++ )
            { res += ( ch1.contenu[alpha] - ch2.contenu[alpha] ) ; } ;
      return res ;
     }

void Chaine::addChaine ( Chaine ch2 )

    { int j=lChaine();
      for (int i=lChaine() ; i<256 ; i++ )
      { contenu[i] = ch2.contenu[(i-j)] ; } ;
     }

void Chaine::cpyChaine ( Chaine ch1 ) { for (int i=0 ; i<256 ; i++ ) contenu[i]=ch1.contenu[i] ; }



/******************************  MAIN PROGRAM  ********************************/

void main ()
{    Chaine x;
     Chaine y;
     x.editChaine("zoby la mouche");
     y.editChaine("zoby et dede le moustique");
     x.printChaine();
     y.printChaine();
     cout<<"comparaison des longueurs de chaines : "<<compLongChaine( x , y )<<"\n";
     cout<<"comparasion des 10 premiers caracteres : "<<compCaraChaine( x , y , 10 )<<"\n";
     x.addChaine ( y );
     x.printChaine();
     x.cpyChaine ( y ) ;
     x.printChaine();
     Chaine z(x);
     z.printChaine();
     system("PAUSE");
      return 0;

} 



 Sources du même auteur

ADDITION / CHAÎNES DE CARACTERES / BOUCLES

 Sources de la même categorie

LISTER FICHIERS ET RÉPERTOIRES (MULTIPLATEFORME) par christophedlr
UTILISATION DES TYPELIST EN C++ par wyden
Source avec Zip Source avec une capture QCSSCOMPRESSOR par alphaone
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip GESTION D'UNE BIBLOTHEQUE par leclerro19

Commentaires et avis

Commentaire de Sylverio le 14/08/2002 17:52:19

Avec des surcharges d'opérateurs ça aurait été beaucoup mieux

Commentaire de pdl le 16/08/2002 08:49:22

C'est bien pour un début, mais ta chaîne est limité à 255 caractères. Petit exercice, re-fais ta classe avec un char *contenu;

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,061 sec (3)

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