C++

Fermé
TCHILDA - 24 nov. 2008 à 23:42
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 nov. 2008 à 08:49
Bonjour,
est ce qu il ya quelqu un a qui j envoi un programme en c++ qui pourra m aider a corriger des erreurs
merci c urgent

3 réponses

Eclyps Messages postés 19 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 13 janvier 2009 11
25 nov. 2008 à 00:25
Mes tes sources directement sur CCM.net ou si elles sont très longue héberge les mais mes pas l'exécutable.
0
#include "Verbe.h"

/* constructeur par defaut */
Verbe::Verbe(){m_string=NULL;}

/* constructeur surcharge */
Verbe::Verbe(char *verbe){

if(verbe!=NULL){
m_string=new char[strlen(verbe)+1];
m_string=strcpy(m_string,verbe);
}
else m_string=NULL;
}
/* constructeur par copie */
Verbe::Verbe(class Verbe& verbe){
char *s=verbe.GetString();
if(s!=NULL){
m_string=new char[strlen(s)+1];
m_string=strcpy(m_string,s);}
else
m_string=NULL;
m_groupe=verbe.GetGroupe();
m_isRegular=verbe.IsRegular();
}
/* destructeur */
Verbe::~Verbe(){
if(m_string!=NULL)delete m_string;}





/* metode getstring : sert a enregistrer la valeur de m_string */
char *Verbe::GetString(){return m_string;}

/* la methode IsRegular : sert a enregistrer la valeur de m_isRegular */
bool Verbe::IsRegular(){return m_isRegular;}

/* methde getgroupe */
unsigned int Verbe::GetGroupe(){return m_groupe;}


void Verbe::SetIsRegular(bool isRegular){m_isRegular=isRegular;}

void Verbe::SetGroupe(unsigned int groupe){m_groupe=groupe;}

void Verbe::SetString(char *string){
if(m_string!=NULL)delete m_string;
if(string!=NULL){
m_string=new char[strlen(string)+1];
m_string=strcpy(m_string,string);}
else
m_string=NULL;
}
/* fonction de decoupage : sert à prendre la terminaison de chaque verbe */
char*decoupe(char*v){
char*p;
p=new char[3];
int i,j;
for(i=0,j=strlen(v)-2;i<2;i++,j++)
{
p[i]=v[j];
}
p[3]='\0';
return p;
}
/* fonction de decoupage1 */
char*decoupe1(char*v1){
char*p1;
p1=new char[4];
int i,j;
for(i=0,j=strlen(v1)-3;i<3;i++,j++)
{
p1[i]=v1[j];
}
p1[4]='\0';
return p1;
}
/* methode identification du groupe */
unsigned int Verbe :: IdentifierGroupe(){
char *var1;
char *var2;
var1 = new char[3];
var1 = strcpy(var1,decoupe(m_string));
var2 = new char[4];
var2 = strcpy(var2,decoupe1(m_string));
if(strcmp(var1,"er") == 0)
{
if(strcmp(m_string,"aller") == 0 )
m_groupe=3;
else
m_groupe=1;
}
if(strcmp(var1,"ir") == 0)
{
if((strcmp(var2,"uir")==0)||(strcmp(var2,"lir")==0)||(strcmp(var2,"rir")==0)||(strcmp(var2,"oir")==0)||(strcmp(var2,"mir")==0)||(strcmp(var2,"mir")==0)||(strcmp(var2,"vir")==0)||(strcmp(var2,"sir")==0)||(strcmp(var2,"tenir")==0))
m_groupe=3;
else
m_groupe=2;
}
if(strcmp(var1,"re") == 0)
{m_groupe=3;}

return m_groupe;
}
/* methode affiche */
void Verbe :: Affiche(){
char*a;
char*b;
a = new char[3];
b = new char[12];
if(m_groupe == 1)
a=strcpy(a,"ere");
if(m_groupe == 2)
a=strcpy(a,"eme");

if(m_isRegular =true)
b = strcpy(b," regulier");
if(m_isRegular =false)
b = strcpy(b," irregulier");

printf("le verbe %s est un verbe : %s du %d %s groupe\n\n\n",m_string,b,m_groupe,a);
}
/* methode pour conjuguer */
void Verbe :: Conjuguer(char *temps){
char * verbe;
verbe =new char[30];
int i;
char * present1 [6] ={"e","es","e","ons","ez","ent"};
char * avoir [6] ={"ai","as","a","avons","avez","ont"};
char * pascompose[6] ={"é","é","é","é","é","é"};
char * present1g [6] ={"e","es","e","eons","ez","ent"};
char * present2 [6] ={"s","s","t","ssons","ssez","ssent"};
char * present3 [6] ={"s","s","t","ons","ez","ent"};
char * sujet [6] ={"je","tu","il/elle","nous","vous","ils/elles"};
char * sujet1 [6] ={"j'","tu","il/elle","nous","vous","ils/elles"};
printf("Entrez dans quel temp en va conjugue le verbe ");

/* conjuguaison en present de l'indicatif */
char*temp;
temp = new char[strlen(temp)+1];

if(strcmp(temp,"present")){
if(m_groupe == 1)
{
/* Les verbes en voyelles */
if((verbe[0]=='a') || (verbe[0]=='e') || (verbe[0]=='i') || (verbe[0]=='o') || (verbe[0]=='u'))
{
/* Couper la terminason 'er' */
verbe[1-2]='\0';
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet1[i],verbe,present1[i]);
}
}
/* verbe du premier groupe avec une terminaison "ger" */
else if(verbe[1-3] == 'g')
{
/* decouper la terminaison */
verbe[1-2]= '\0';
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],verbe,present1g[i]);
}

}
else
{
/* decouper la terminaison */
verbe[1-2]= '\0';
/* cas general des verbe du 1er groupe au present de l'indicatif. */
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],verbe,present1[i]);
}
}
}
/* 2eme groupe */
if(m_groupe == 2)
{
/* decouper la terminaison */
verbe[1-1]= '\0';
/* cas general des verbe du 2eme groupe au present de l'indicatif. */
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],verbe,present2[i]);
}
}
/* 3eme groupe */
if(m_groupe == 3)
{
/* Les verbes en voyelles */
if((verbe[0]=='a') || (verbe[0]=='e') || (verbe[0]=='i') || (verbe[0]=='o') || (verbe[0]=='u'))
{
/* Couper la terminason 'er' */
verbe[1-1]='\0';
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet1[i],verbe,present3[i]);
}
}
/* verbe du premier groupe avec une terminaison "ger" */
else
{
/* decouper la terminaison */
verbe[1-1]= '\0';
/* cas general des verbe du 3er groupe au present de l'indicatif*/
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],verbe,present3[i]);
}
}
}
}
/* passe composé */
if(strcmp(temp,"passe compose")){
if(m_groupe == 1)
{
/* Les verbes en voyelles */
if((verbe[0]=='a') || (verbe[0]=='e') || (verbe[0]=='i') || (verbe[0]=='o') || (verbe[0]=='u'))
{
/* Couper la terminason 'er' */
verbe[1-2]='\0';
for(i=0;i<6;i++)
{
printf("%s %s %s %s \n",sujet1[i],avoir[i],verbe,pascompose[i]);
}
}
else
{
/* decouper la terminaison */
verbe[1-2]= '\0';
/* cas general des verbe du 1er groupe au present de l'indicatif*/
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],avoir[i],verbe,pascompose[i]);
}
}
}
/* 2eme groupe */
if(m_groupe == 2)
{
/* decouper la terminaison */
verbe[1-1]= '\0';
/* cas general des verbe du 2eme groupe au present de l'indicatif.*/
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],avoir[i],verbe);
}
}
//3eme groupe
if(m_groupe == 3)
{
/* Les verbes en voyelles */
if((verbe[0]=='a') || (verbe[0]=='e') || (verbe[0]=='i') || (verbe[0]=='o') || (verbe[0]=='u'))
{
// Couper la terminason 'er'
verbe[1-1]='\0';
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet1[i],avoir[i],verbe);
}
}
/* verbe du premier groupe avec une terminaison "ger" */
else
{
/*decouper la terminaison*/
verbe[1-1]= '\0';
/* cas general des verbe du 3er groupe au present de l'indicatif. */
for(i=0;i<6;i++)
{
printf("%s %s %s \n",sujet[i],avoir[i],verbe);
}
}
}
}
}

int main(void)
{

//v1 sans arguments
Verbe v1;
//v1.SetIsRegular();
//v1.SetGroupe();
//v1.Affiche();
printf("%s\n",v1.GetString());
Verbe v2("travailler");
v2.SetIsRegular(true);
v2.SetGroupe(1);
v2.Affiche();
//v4 par copie de v1
Verbe v4=v2;
v4.Affiche();

//question 2-3
printf("Entrez le verbe a conjuger:\n");
char*verbe=new char[100];
scanf("%s",verbe);
Verbe v3(verbe);
v3.IdentifierGroupe();
v3.Conjuguer("présent");
v3.SetIsRegular(true);
v3.SetGroupe(1);
v3.Affiche();
delete verbe;
return 0;
}

dans la compliation il n ya pa d'erreurs mai dans l'execution donne une erreur
merci
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 nov. 2008 à 08:49
Salut.
Je n'ai pas lu ton code, juste survolé. J'ai vu qu'il y avait des pointeurs. Si le code compile bien mais que tu as une erreur de segmentation à l'exécution (tu n'as pas préciser l'erreur) il y a 9 chance sur 10 que le problème vienne d'une allocation mémoire mal faite.
Plutôt que de te le faire, je vais t'expliquer comme résoudre ce problème. Déjà, il convient d'être rigoureux, c'est à dire qu'a chaque fois que l'on modifie une variable pointé, il faut être certain qu'elle a été alloué. Mais bon, personne n'est à l'abris d'une erreur ou d'un oubli. C'est pour ça qu'il y a le "debuggueur". Son nom est gdb si tu utilise gcc pour compiler. Grace à ce programme tu lance ton exécutable (gdb monprog.exe) dans un mode particulier qui va te dire où l'erreur se produit.
Si le debugueur n'y arrive pas (ça arrive, car il ne réagit pas comme l'OS, et les erreurs de mémoire peuvent être assez subtiles) il existe des utilitaire plus lourd qui pourront t'aider, tel que Valgrind.
0