Problème avec les strings

Signaler
Messages postés
2
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
29 mai 2004
-
Messages postés
2
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
29 mai 2004
-
Bonjour

J'ai un programme qui tournait parfaitement lorsque j'utisais les char. J'ai voulu remplacé ces derniers par des string en n'omettant pas #include<string> J'ai eu quelque soucis à la compilation et j'ai trouvé sur des forum qu'il fallait rajouté : using namespace std;

Tout fonctionne bien qd je compile et que je créé l'exécutable, j'ai 0 erreurs, 0 warning mais l'executable plante et me met deux messages d'erreurs à la suite comme quoi l'exe a planté. Lorsque je fais Débogage il me met dans le fichier OUTPUT.C

J'utilise Visual C++ version du pack Visual Studio 6

Est-ce que c'est déjà arrivé à quelqu'un ou quelqu'un connait-il la solution de mon problème ?

Elween

2 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
montre le code complet, j'ai jamaiis eu de probleme avec std::string et vc++6.0

et puis ne compile pas en .C pour du c++ avec vc++
Messages postés
2
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
29 mai 2004

Voivi le code complet en espérant ne rien avoir oublié

******************

// Fichier eleve.h definition de la classe Eleve

#ifndef _ELEV
#define _ELEV
#include<string>

using namespace std;

class Eleve
{
string nom; // nom de l'élève
float note; // note obtenue
public :
void init(string pnom, float pnote); // initialisation
string getNom(); // retourne le nom de l'élève
float getNote(); // retourne la note de l'élève

};

#endif

// Fichier Elevemethodes.cpp qui sert à obtenir le fichier Elevemethodes.obj décrivant les méthodes de la classe Eleve

#include"eleve.h"
#include<string>

using namespace std;

void Eleve::init(string pnom, float pnote)
{
nom=pnom;
note = pnote;
}

string Eleve::getNom()
{
return nom;
}

float Eleve::getNote()
{
return note;
}

// Fichier tabeleve.h définition de la classe TabEleves

#ifndef _TABELEV
#define _TABELEV

#include<vector>
#include"eleve.h"

using namespace std;

typedef vector<Eleve> Eleve_vector;

class TabEleves
{
Eleve_vector val; // les élèves mémorisés
public :
int getNb(); // retourne le nombre d'élèves mémorisés
void ajouter(Eleve ele); // ajoute un élève dans le tableau
Eleve valeur(int i); // retourne l'élève mémorisé à l'indice i
Eleve meilleur(); //retourne le meilleur élève mémorisé
Eleve moinsbon(); //retourne l'élève le moins bon mémorisé
float moyenne(); //retourne la moyenne des élèves mémorisés
int nbmoyenne(); //retourne le nombre d'élève ayant la moyenne ou plus

};

#endif

// Fichier tabelevemethode.cpp qui sert à obtenir le fichier tabelevemethode.obj décrivant les méthodes de la classe TabEleves

#include"eleve.h"
#include"tabeleve.h"

int TabEleves::getNb()
{
int nb;
nb = val.size();

return (nb);
}

void TabEleves::ajouter(Eleve ele)
{
int pos, i, nb;

val.resize(val.size()+1);

val[val.size()-1]=ele; // sentinelle

pos=0;

nb=val.size();

while (val[pos].getNote() < ele.getNote())
{
pos++;
}
if (pos = nb+1)
{
nb++; // ele est correctement placé
}
else
{
for (i=nb ; i=pos ;i=i-1)
{
val[i+1]=val[i];
}
val[pos]=ele;
nb++;
}
}

Eleve TabEleves::valeur(int i)
{

Eleve objele;

objele=val[i];

return(objele);
}

Eleve TabEleves::meilleur()
{
int nbeleve, indice, i;

float note;

float bnote;

nbeleve=val.size();

bnote=val[0].getNote();

indice=0;

for (i=1;i<=nbeleve;i++)
{
note=val[i].getNote();

if (note>bnote)
{
bnote=note;
indice=i;
}
}

return val[indice];
}

Eleve TabEleves::moinsbon()
{
int nbeleve, indice, i;

float note;

float mnote;

nbeleve=val.size();

mnote=val[0].getNote();

indice=0;

for (i=1;i<=nbeleve;i++)
{
note=val[i].getNote();

if (note<mnote)
{
mnote=note;
indice=i;
}
}

return val[indice];
}

float TabEleves::moyenne()
{
int i;

float totalnote, nbeleve;

float moy;

nbeleve=val.size();

totalnote=0;

for (i=0;i<=nbeleve;i++)
{
totalnote=totalnote + val[i].getNote();
}

moy = totalnote/nbeleve;

return moy;
}

int TabEleves::nbmoyenne()
{

Eleve objele;

int nbeleve, cpeleve, i;

nbeleve=val.size();

cpeleve=0;

for (i=0;i<=nbeleve;i++)
{
objele=val[i];

if (objele.getNote() >= moyenne())
{
cpeleve++;
}
}

return cpeleve;
}

//et enfin le fichier progeleve.cpp, progamme principal utilisant les objets des deux classes

// progelev.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include"eleve.h"
#include"tabeleve.h"
#include"eleve.h"
#include<conio.h>
#include<string>

using namespace std;

void main()
{
string nom;

TabEleves t;
Eleve eleve1;
eleve1.init("Aurelie",13);
t.ajouter(eleve1);
printf("%s",eleve1.getNom());
getch();
}