begin process at 2012 05 29 22:01:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Problème de segmentation, incrémentation champs de tableaux


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de segmentation, incrémentation champs de tableaux

dimanche 31 octobre 2010 à 10:02:11 | Problème de segmentation, incrémentation champs de tableaux

wizard512

Membre Club
Bonjour,
J'ai un petit souci en langage C++ rien de bien compliquer mais bon sachant que je suis rouiller quelques années... J'ai créer une class avec en son sein deux fonctions. La première place tous simplement son argument dans un tableau (du moins elle essaye lol) et La deuxieme nous affiche le contenue du tableau.
En théorie c'est simple en pratique prise de tete...
Voici la ligne de commande pour la compilation : g++ -o tmp.exe tmp.cpp
Durant la compilation aucune erreur n'est retourner et la compilation s'effectue correctement, mais lors de l'exécution j'obtient une erreur de segmentation. Voici le code :


Code C/C++ :
	#define taille_tab(tab) sizeof(tab)/sizeof(tab[0])
	#include <string>
	#include <iostream> 
	#include <vector>
	using namespace std ;

	class redigeForMe
	{
			public  :
				void addLigne( const char* str ) ;
				void cc( void ) ;
				vector< string > mesChaines;
				static int counter ;
			private :
				int index ;
				int nbIns ; // nombre d'instruction archivé
				string HTMLcode ;		
	} ;

		int redigeForMe::counter = 0 ;
		void redigeForMe::addLigne( const char* str )
		{
			cout << counter << endl ;
			mesChaines[ counter ] = str ;
			counter += 1 ;
		} ;
		
		void redigeForMe::cc( void ) // Create Content
		{
				for( index = 0 ; index < counter ; index++ )
					HTMLcode += mesChaines[ index ] + "\n"  ;
			cout << HTMLcode << endl ;
		} ;



Voila son équivalent en php (en gros comment j'aurais souhaitez que sa marche)


Code PHP :
$MesChaines = Array() ;
$HTMLCode = "" ;

function addLigne($str)
{
    global $MesChaines ;
    $MesChaines[ count( $MesChaines ) ] = $str ;
} ;

function cc()
{
    global $MesChaines ;
    global $HTMLCode ;
             for( $index = 0 ; $index < count( $MesChaines ); $index++ )
                   $HTMLCode .= $MesChaines[ $index ] ;
    echo $HTMLCode ;
} ;



Cordialement, Adam.
dimanche 31 octobre 2010 à 11:28:11 | Re : Problème de segmentation, incrémentation champs de tableaux

wizard512

Membre Club
Réponse acceptée !
Bon voici la réponse :

Code C/C++ :
void redigeForMe::addLigne( const char* str )
{
	mesChaines.push_back( string(str) );
}


il faut utilisé push_back() ;

tchaooo
mardi 2 novembre 2010 à 10:28:02 | Re : Problème de segmentation, incrémentation champs de tableaux

CptPingu

Administrateur CodeS-SourceS
Plein de remarques:
- Évite les using namespace std, voir: [ Lien ]
- Évite les char*, préfère les std::string.
- En C++, inutile de mettre void dans une fonction ne prenant pas d'argument, on préfère laisser les parenthèses vides.
- Lorsque l'on concatène un nombre indéfini d'éléments, on évite d'utiliser un std::string. On préfère utiliser une classe dédiée aux concaténations rapides: std::iostringstream.
- Pour parcourir une collection, on utilise une méthode unifié appelée "iterateur".
- Une fonction d'affichage prend généralement en argument le flux ou afficher (sortie standard, sortie d'erreur, un fichier, etc...).

Là c'est du détail:
- Une classe commence généralement par une majuscule.
- On différencie les attributs d'une classe, par exemple en les préfixant d'un "_".
- Met plus de warning sur ta ligne de compil, au moins: g++ -W -Wall -Wabi -pedantic

Code C/C++ :
#include <sstream>
#include <iostream>
#include <vector>

class RedigeForMe
{
public:
  void addLigne(const std::string& str);
  void cc(std::ostream& out);

private:
  typedef std::vector<std::string>::const_iterator iter;

  std::vector<std::string> _mesChaines;
  int nbIns; // nombre d'instruction archivé
};

void RedigeForMe::addLigne(const std::string& str)
{
  _mesChaines.push_back(str);
}

void RedigeForMe::cc(std::ostream& out)
{
  std::ostringstream buff;

  for (iter it = _mesChaines.begin(); it != _mesChaines.end() ; ++it)
    buff << *it << std::endl;
  out << buff.str() << std::endl;
}


int main()
{
  RedigeForMe redige;

  redige.addLigne("Linge 1");
  redige.addLigne("Linge 2");

  redige.cc(std::cout); // Sortie standard
  redige.cc(std::cerr); // Sortie d'erreur
  //  redige.cc(file); // On pourrait aussi mettre un fichier

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : void, index, counter, htmlcode, meschaines


Répondre à ce message

Sujets en rapport avec ce message

class.... [ par Tautau ] voila j'ai un petit prob lors de ma compilation et j'ai un test dessus lundi :#include "conio.h"#include "iostream.h"class C_Tableau{ private: base de registre : fonction gerenumvalue [ par Daimadoshi ] mo code : while (ERROR_NO_MORE_ITEMS!=RegEnumValue(//trouve le nombre de valeurs contenues dans la cle m_CleOuverte,//Handle de la cle ouverte ind morpion [ par charon123 ] Bon, 1), je suis débutant et je viens de commencer il y a une semaine. 2)j'utilise dev-cpp es ce que c'est bien? 3)alors voila, j'essaye de faire un m Gros Probleme En C [ par Infern0 ] Bon, voila 3 fonction de mon programme. Avec celle d'affichage, quand j'affiche la 1ere, y a aucun probleme, si j'affiche la deuxieme, g des chiffre Aidez moi, g un probleme sur le lecture ecriture d'un fichier [ par niggaz972 ] Je realise un ptit programme comme je suis débutant, et c la premiere fois ke j'ecrit et lit sur des fichier!Je gere la gestion d'un parc automobile, HELP: comment trouver, detecter, recuperer, l'index d'une ligne vide d'un fichier excel en visual c++ [ par raspa ] comment trouver, detecter, recuperer, l'index d'une ligne vide d'un fichier excel en visual c++j'ai cette commande: range=oSheet.GetRange(COleVariant( Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu pb de Z-buffer ac openGL -> Help! [ par Arnaud16022 ] bonjour tt le monde!quelqun pourrait me dire pourqoui le Z-buffer marche pas?pasque le dernier (4ème) triangle dessiné apparait tjs au dessus, meme s' pb eof en C++ le dernier element est lu 2 fois :( [ par panini21 ] salut a tousvoila g un prog qui permet de creer une 'bibliotheque de jeux'a savoir :les renseignement du jeu sont le prix, le nom, la descriptiopn et message d'erreur a l'execution [ par frdestroyers27 ] Bonjours a tous!j'ai taper le programme suivant en Win32Console app.#include #include #include char nom[50][MAX_PATH];void lister(LPCTSTR file);void a


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 0,827 sec (4)

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