Concaténer deux chaines de caractères

Concaténer deux chaines de caractères - C++ - Programmation

Marsh Posté le 08-04-2015 à 20:55:53    

Bonjour, j'ai un exercice à faire en c++ ;

 
Code :
  1. Code :
  2. ‪#‎include‬ <iostream>
  3. #include <sstream>
  4. #include <ctime>
  5. #include <string>
  6. #include <vector>
  7. #include <cstring>
  8. using namespace std;
  9. class Chaine {
  10. private:
  11. char *carac;
  12. int nb=0;
  13. public :
  14. Chaine();
  15. Chaine(const Chaine &ch);
  16. Chaine(const vector<char> &v);
  17. template <typename Iter>
  18. Chaine(Iter deb, Iter fin);
  19. Chaine(const char *ch):nb(strlen(ch))
  20. {
  21. carac= new char [nb];
  22. for(unsigned i=0; ch[i]!='\0'; ++i)carac[i]=ch[i];
  23. }
  24. int longueur() const
  25. {
  26. return nb;
  27. }
  28. void concat(const Chaine *d)
  29. {
  30. nb=d.longueur()+longueur();
  31. }
  32. void affiche()
  33. {
  34. for(unsigned i=0;i<nb;++i)cout<<carac[i];
  35. }
  36. };
  37. int main ()
  38. {
  39. Chaine ch0("Hello" );
  40. Chaine ch1(" " );
  41. ch0.affiche();
  42. cout<<'\n';
  43. cout<<ch0.longueur();
  44. cout<<'\n';
  45. ch1.concat(ch0);
  46. cout<<'\n';
  47. ch1.affiche();
  48. }
 

Je bloque sur la class "concat" quelqu'un pourrait m'aider svp ? Le prof veut pas que je change la forme du code source  :(


Message édité par turbo_b le 08-04-2015 à 22:07:54
Reply

Marsh Posté le 08-04-2015 à 20:55:53   

Reply

Marsh Posté le 09-04-2015 à 17:07:41    

concat() n'est pas une classe mais une fonction de ta classe Chaine en l'occurrence.
Du reste, inutile de faire appel à la fonction longueur() de la classe pour récupérer la taille de la chaîne courante (pas celle passée en paramètre). Tu peux faire :
nb += d.longueur();
 
Au passage, pour faciliter la lecture de ton code, ça serait bien de l'indenter :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed