Comment creer un traducteur français-anglais utilisé l'arbre binaire?

momoinfo92 Messages postés 5 Date d'inscription samedi 24 mars 2012 Statut Membre Dernière intervention 29 mai 2012 - 31 mars 2012 à 23:16
momoinfo92 Messages postés 5 Date d'inscription samedi 24 mars 2012 Statut Membre Dernière intervention 29 mai 2012 - 29 mai 2012 à 18:12
Bonjour

SVP j'ai un projet et j'ai besoin vos conseils

comment créer un traducteur français-anglais utilisé l'arbre binaire de recherche basée sur l'ordre alphabétique des mots chaque noeud de l'arbre contient un mot en français et sa traduction en anglais ?

Traduire un texte donné sous forme d'une chaîne de caractères du français vers l'anglais le programme doit recherche chaque mots du texte dans le dictionnaire puis afficher sa traduction


Merci
j'attend vos réponse

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
1 avril 2012 à 12:36
Bonjour.

Je rappelle qu'on aide volontiers à corriger un code, mais que l'on ne fournit pas de code tout fait, et que l'on ne fait pas la réflexion à la place de l'auteur.

Je t'invite donc à poster ton code, et expliquer quelles parties de celui-ci te bloque.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
momoinfo92 Messages postés 5 Date d'inscription samedi 24 mars 2012 Statut Membre Dernière intervention 29 mai 2012
5 avril 2012 à 16:37
je essaye de résolution l'exercice et je n'ai pas un problème dans la compilation mains dans l’exécution il y'a un faute dans la procédure traduire_texte la reponce de cette procédure est n'ai pas juste quand je saisi le texte contient du mot appartient a le dictionnaire la résulta toujours " ?" est voila le code
merci d'avance.

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


#include<stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct dictionaire
{
char motfrancais[20];
char motanglais[20];
dictionaire *sag;
dictionaire *sad;
}dictionaire;
void creer_arbredictionaire(dictionaire *&r);
void afficherin_ordre(dictionaire*&r);
char recherche_un_mots(dictionaire *&r);
void ajouter_mots (dictionaire *&r);
void traduire_texte(dictionaire *&r);
dictionaire*r;
char phrase [50];char fr[20];char an [50];char x[20];char y[20];char z[20];char w[20];char e[20];char k[20];char g[20];
int m,n,i,j,l;
int main()
{i=1;
system("\ncolor fc");
do
{
printf(" *******************************************************************************\n");
printf(" * Bienvenue sur le dictionnaire francais/anglais *\n");
printf(" *******************************************************************************\n");
printf(" \n entrez votre chois: \n");
printf("0- recherche un mot dans le dictionaire\n");
printf("1- creer le dictionaire\n");
printf("2-afficher les mots de dictionaire \n");
printf("3-ajouter un mots dans le dictionaire \n");
printf("4-traduire un texte \n");
printf("5-pour quitter \n");

scanf("%d",&m);
switch (m)
{
case 1 :


printf("\n donner la taille de l'arbre : ");
scanf("%d",&n);
r=NULL;
for(i=0;i<n;i++)
{
printf("\n donner le mots en francais : ");
scanf("%s",&fr);
printf("\n donner le mots en anglais : ");
scanf("%s",&an);
creer_arbredictionaire(r);
}
break;
case 2 :afficherin_ordre(r);break;
case 3 :
printf("\n donner le mots en francais que vous ajoute : ");
scanf("%s",&fr);
printf("\n donner le mots en anglais que vous ajoute : ");
scanf("%s",&an);
ajouter_mots (r);
break;
case 0 : printf("\n donner le mots en francais que vous chercher dans le dictionare : ");
scanf("%s",&fr);
recherche_un_mots(r);
break;
case 4 :
printf("\n donner le texte en francais que vous dans traduire : ");
scanf("%s",& phrase );
traduire_texte(r)
;break;
case 5 :break;
}
}while (n!=5);
system("\npause");
scanf("%d");
return 0;
}
/***************************procedure creer_arbredictionaire**************************************/
void creer_arbredictionaire(dictionaire *&r)
{
if(r==NULL)
{
r=(dictionaire*)malloc(sizeof(dictionaire));
strcpy(r->motfrancais,fr);
strcpy(r->motanglais,an);
r->sag=NULL;
r->sad=NULL;
}
else
{
if(strcmp(fr,r->motfrancais)<0)
{
creer_arbredictionaire(r->sag);
}
else
{
if(strcmp(fr,r->motfrancais)>0)
{
creer_arbredictionaire(r->sad);
}
else
printf("\n le mots deja existe .");
}
}
}



/***************************procedureafficherin_ordre**************************************/

void afficherin_ordre(dictionaire*&r)
{
if(r!=NULL)
{
afficherin_ordre(r->sag);
printf(" \n les mots de dictionaire est : %s = %s",r->motfrancais,r->motanglais);
afficherin_ordre(r->sad);
}
printf(" \n ");
}

/***************************procedure ajouter_mots **************************************/

void ajouter_mots (dictionaire *&r)
{
if(r==NULL)
{
r=(dictionaire*)malloc(sizeof(dictionaire));
strcpy(r->motfrancais,fr);
strcpy(r->motanglais,an);
r->sag=NULL;
r->sad=NULL;
}
else
{
if(strcmp(fr,r->motfrancais)<0)
{
creer_arbredictionaire(r->sag);
}
else
{
if(strcmp(fr,r->motfrancais)>0)
{
creer_arbredictionaire(r->sad);
}
else
printf("\n le mots deja existe .");
}
}
}

/***************************procedure recherche_un_mots **************************************/

char recherche_un_mots(dictionaire *&r)
{
if(r==NULL)
printf("\n ?");
else
{
if(strcmp(fr,r->motfrancais)<0)
recherche_un_mots(r->sag);
else
{
if(strcmp(fr,r->motfrancais)>0)
recherche_un_mots(r->sad);
else
printf("c element est appartient a cette arbre et le sens de mot est: .\n ");
strcpy(x,r->motanglais);
printf(" %s",x);

}
}
}



/***************************procedure traduire_texte**************************************/

void traduire_texte(dictionaire *&r )
{ j=0;
l=strlen(phrase);
strcpy(z, " ");
strcpy(w, ",");
strcpy(e, ".");
for (i=0;i<l;i++)
{ g[0]=phrase[i];
if ((strcmp(g,z)<0)&&(strcmp(g,w)<0)&&(strcmp(g,e)<0))
{
k[j]= phrase[i];
j=j+1;
}
strcpy(fr,k);
recherche_un_mots(r);
j=0;
}

}



*********************************************************************************************
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
5 avril 2012 à 16:40
Merci de mettre ton code dans des balises de code et de l'indenter.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
momoinfo92 Messages postés 5 Date d'inscription samedi 24 mars 2012 Statut Membre Dernière intervention 29 mai 2012
5 avril 2012 à 22:56
********************************************************************************************* 


#include<stdio.h> 
#include<stdlib.h> 
#include <string.h> 
typedef struct dictionaire 
{ 
char motfrancais[20]; 
char motanglais[20]; 
dictionaire *sag; 
dictionaire *sad; 
}dictionaire; 
void creer_arbredictionaire(dictionaire *&r); 
void afficherin_ordre(dictionaire*&r); 
char recherche_un_mots(dictionaire *&r); 
void ajouter_mots (dictionaire *&r); 
void traduire_texte(dictionaire *&r); 
dictionaire*r; 
char phrase [50];char fr[20];char an [50];char x[20];char y[20];char z[20];char w[20];char e[20];char k[20];char g[20]; 
int m,n,i,j,l; 
int main() 
{i=1; 
system("\ncolor fc"); 
do 
{ 
printf(" *******************************************************************************\n"); 
printf(" * Bienvenue sur le dictionnaire francais/anglais *\n"); 
printf(" *******************************************************************************\n"); 
printf(" \n entrez votre chois: \n"); 
printf("0- recherche un mot dans le dictionaire\n"); 
printf("1- creer le dictionaire\n"); 
printf("2-afficher les mots de dictionaire \n"); 
printf("3-ajouter un mots dans le dictionaire \n"); 
printf("4-traduire un texte \n"); 
printf("5-pour quitter \n"); 

scanf("%d",&m); 
switch (m) 
{ 
case 1 : 


printf("\n donner la taille de l'arbre : "); 
scanf("%d",&n); 
r=NULL; 
for(i=0;i<n;i++) 
{ 
printf("\n donner le mots en francais : "); 
scanf("%s",&fr); 
printf("\n donner le mots en anglais : "); 
scanf("%s",&an); 
creer_arbredictionaire(r); 
} 
break; 
case 2 :afficherin_ordre(r);break; 
case 3 : 
printf("\n donner le mots en francais que vous ajoute : "); 
scanf("%s",&fr); 
printf("\n donner le mots en anglais que vous ajoute : "); 
scanf("%s",&an); 
ajouter_mots (r); 
break; 
case 0 : printf("\n donner le mots en francais que vous chercher dans le dictionare : "); 
scanf("%s",&fr); 
recherche_un_mots(r); 
break; 
case 4 : 
printf("\n donner le texte en francais que vous dans traduire : "); 
scanf("%s",& phrase ); 
traduire_texte(r) 
;break; 
case 5 :break; 
} 
}while (n!=5); 
system("\npause"); 
scanf("%d"); 
return 0; 
} 
/***************************procedure creer_arbredictionaire**************************************/ 
void creer_arbredictionaire(dictionaire *&r) 
{ 
if(r==NULL) 
{ 
r=(dictionaire*)malloc(sizeof(dictionaire)); 
strcpy(r->motfrancais,fr); 
strcpy(r->motanglais,an); 
r->sag=NULL; 
r->sad=NULL; 
} 
else 
{ 
if(strcmp(fr,r->motfrancais)<0) 
{ 
creer_arbredictionaire(r->sag); 
} 
else 
{ 
if(strcmp(fr,r->motfrancais)>0) 
{ 
creer_arbredictionaire(r->sad); 
} 
else 
printf("\n le mots deja existe ."); 
} 
} 
} 



/***************************procedureafficherin_ordre**************************************/ 

void afficherin_ordre(dictionaire*&r) 
{ 
if(r!=NULL) 
{ 
afficherin_ordre(r->sag); 
printf(" \n les mots de dictionaire est : %s = %s",r->motfrancais,r->motanglais); 
afficherin_ordre(r->sad); 
} 
printf(" \n "); 
} 

/***************************procedure ajouter_mots **************************************/ 

void ajouter_mots (dictionaire *&r) 
{ 
if(r==NULL) 
{ 
r=(dictionaire*)malloc(sizeof(dictionaire)); 
strcpy(r->motfrancais,fr); 
strcpy(r->motanglais,an); 
r->sag=NULL; 
r->sad=NULL; 
} 
else 
{ 
if(strcmp(fr,r->motfrancais)<0) 
{ 
creer_arbredictionaire(r->sag); 
} 
else 
{ 
if(strcmp(fr,r->motfrancais)>0) 
{ 
creer_arbredictionaire(r->sad); 
} 
else 
printf("\n le mots deja existe ."); 
} 
} 
} 

/***************************procedure recherche_un_mots **************************************/ 

char recherche_un_mots(dictionaire *&r) 
{ 
if(r==NULL) 
printf("\n ?"); 
else 
{ 
if(strcmp(fr,r->motfrancais)<0) 
recherche_un_mots(r->sag); 
else 
{ 
if(strcmp(fr,r->motfrancais)>0) 
recherche_un_mots(r->sad); 
else 
printf("c element est appartient a cette arbre et le sens de mot est: .\n "); 
strcpy(x,r->motanglais); 
printf(" %s",x); 

} 
} 
} 



/***************************procedure traduire_texte**************************************/ 

void traduire_texte(dictionaire *&r ) 
{ j=0; 
l=strlen(phrase); 
strcpy(z, " "); 
strcpy(w, ","); 
strcpy(e, "."); 
for (i=0;i<l;i++) 
{ g[0]=phrase[i]; 
if ((strcmp(g,z)<0)&&(strcmp(g,w)<0)&&(strcmp(g,e)<0)) 
{ 
k[j]= phrase[i]; 
j=j+1; 
} 
strcpy(fr,k); 
recherche_un_mots(r); 
j=0; 
} 

} 



********************************************************************************************* 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
momoinfo92 Messages postés 5 Date d'inscription samedi 24 mars 2012 Statut Membre Dernière intervention 29 mai 2012
29 mai 2012 à 18:12
Bonjour tout le monde,

après essai résolue mon problème j'ajoute la solution et voila la solution pour tous les débutant comme moi qui le besoin. javascript:void(0);
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
typedef struct dictionaire
{
char motfrancais[20];
char motanglais[20];
dictionaire *sag;
dictionaire *sad;
}dictionaire;
void creer_arbredictionaire(dictionaire *&r);
void afficherin_ordre(dictionaire*&r);
char recherche_un_mots(dictionaire *&r,char fr[20]);
void ajouter_mots (dictionaire *&r);
void traduire_texte(dictionaire *&r,char phrase [50]);
dictionaire*r; 
char phrase [50];char fr[100];char an [50]; char y[20];char z[20];char w[20];char e[20];char g[20];char t[20];
int m,n,i,j,l,b,x;
int main()
{i=0;
      system("\ncolor ac");
 do 
 {  
     printf(" *******************************************************************************\n");
    printf("                  * Bienvenue sur le dictionnaire francais/anglais *\n");
    printf(" *******************************************************************************\n");
    printf(" \n entrez votre chois:  \n");
    printf("0- recherche un mot dans le dictionaire\n"); 
    printf("1- creer le dictionaire\n"); 
    printf("2-afficher les mots de dictionaire \n");
    printf("3-ajouter un mots dans le dictionaire \n"); 
    printf("4-traduire un texte  \n");
    printf("5-pour quitter \n");
 
 scanf("%d",&m);
 switch (m)
{
case 1 :
     
     
     printf("\n donner la taille de l'arbre : ");
     scanf("%d",&n);
     r=NULL;
      for(i=0;i<n;i++)
     {
    printf("\n donner le mots en francais : ");
    scanf("%s",&fr);
    printf("\n donner le mots en anglais : ");
    scanf("%s",&an);
    creer_arbredictionaire(r);
    }
      break;
case 2 :afficherin_ordre(r);break;
case 3 :  
    printf("\n donner le mots en francais que vous ajoute : ");
    scanf("%s",&fr);
    printf("\n donner le mots en anglais que vous ajoute  : ");
    scanf("%s",&an);     
    ajouter_mots (r);
    break;
case 0 :  printf("\n donner le mots en francais que vous chercher dans le dictionare : ");
          scanf("%s",&fr);
          recherche_un_mots(r,fr);
          break;
case 4 :
       printf("\n donner le texte en francais que vous  dans traduire : ");
       scanf("%s",& phrase );
       traduire_texte(r, phrase)
       ;break;
case 5 :break;
}
}while (n!=5); 
  system("\npause");
  scanf("%d");
  return 0;
 }
 /***************************procedure creer_arbredictionaire**************************************/   
void creer_arbredictionaire(dictionaire *&r)
 {
    if(r==NULL)
    {
      r=(dictionaire*)malloc(sizeof(dictionaire));
      strcpy(r->motfrancais,fr);
      strcpy(r->motanglais,an);
      r->sag=NULL;
      r->sad=NULL;
      }
      else
      {
        if(strcmp(fr,r->motfrancais)<0)
            {
              creer_arbredictionaire(r->sag);
            }
             else
              {
              if(strcmp(fr,r->motfrancais)>0)
                { 
                  creer_arbredictionaire(r->sad);
                  }
                   else
                   printf("\n le mots deja existe .");
                   }
                   }
                   }
                 
 
 
  /***************************procedureafficherin_ordre**************************************/  
 
void afficherin_ordre(dictionaire*&r)
{      
       if(r!=NULL)
       {
       afficherin_ordre(r->sag);
       printf(" \n les mots de dictionaire est : %s = %s",r->motfrancais,r->motanglais);
       afficherin_ordre(r->sad);
       } 
       printf(" \n ");
}

 /***************************procedure ajouter_mots **************************************/   
 
 void ajouter_mots (dictionaire *&r)
 {
      if(r==NULL)
    {
      r=(dictionaire*)malloc(sizeof(dictionaire));
      strcpy(r->motfrancais,fr);
      strcpy(r->motanglais,an);
      r->sag=NULL;
      r->sad=NULL;
      }
      else
      {
        if(strcmp(fr,r->motfrancais)<0)
            {
              creer_arbredictionaire(r->sag);
            }
             else
              {
              if(strcmp(fr,r->motfrancais)>0)
                { 
                  creer_arbredictionaire(r->sad);
                  }
                   else
                   printf("\n le mots deja existe .");
                   }
                   }
                   }  
 
 /***************************procedure recherche_un_mots **************************************/   
 
char recherche_un_mots(dictionaire *&r,char fr[100])
 {
    if(r!=NULL)
    {
    if(strcmp(fr,r->motfrancais)<0)
       recherche_un_mots(r->sag,fr);
      else
      {
         if(strcmp(fr,r->motfrancais)>0)
           recherche_un_mots(r->sad,fr);
         else
         {
         
          printf("  %s",r->motanglais);
          } 
      }
    }
    else
    printf("\n ?");
  }
 
 
 
  /***************************procedure traduire_texte**************************************/   
 

 void traduire_texte(dictionaire *&r,char phrase [50] )     
  {   char k[20];
  
   for (x=0; x<=20; x++)
               {
              k[x]=t[0]; 
              }
  
      j=0;
      l=strlen(phrase)-1;
       strcpy(z, " ");
       strcpy(w, ",");
       strcpy(e, ".");
      strcpy(t, "\0");
      for( i=0;i<=l;i++)
      {
           g[0]=phrase[i];
           if ((strcmp(g,z)!=0)&&(strcmp(g,w)!=0)&&(strcmp(g,e)!=0))
           {
                                                                    
            k[j]=phrase[i];                                                       
             j=j+1;
             
                                                                
           }
          else
          {
              b=strlen(k);
            recherche_un_mots(r,k);  
            j=0;
            for (x=0; x<= b; x++)
               {
              k[x]=t[0]; 
              }
             }
           }
            recherche_un_mots(r,k);  
  
      } 
     

 
 
 
 
 
0
Rejoignez-nous