Ne soyez pas si dur avec elle, nous etions et nous sommes encore des debutants, sur autres forum on parle d'autres choses plus compliquées c sûr mais là au moins, mais tu me promets cloé que tu vas bien essayer de comprendre ce code stp, et que tu traitera les deux qui ne sont pas pris en compte comme l' ou encore ç
bon voillà ce que j'ai fait :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * dico [45]={"chamaller","donner","former","retourner","manger","essuyer","envoyer","monnayer","effrayer","chanter","jeter","expulser","remanger","nager"};
char *term [6][3]={{"e","es","e"},{"ons","ez","ent"},{"e","es","e"},{"eons","ez","ent"},{"ie","ies","ie"},{"yons","yez","ient"}};
char * prenom[6]={"je","tu","il","nous","vous","ils"};
char voyelles[6]={'a','e','i','o','u','y'};
/*Precar */
char * precar (char * s){
int i=0;
int l = strlen(s);
while(((s[i]<'A')||(s[i]>'Z'))&&((s[i]<'a')||(s[i]>'z'))&&(i < l))
{
i++;
}
if((s[i]==9)||(s[i]==32))
printf("cette chaine ne contient que d'espaces et tabulations\n");
/*printf("\"precar\" dit que l'adrs du 1er char est %p \n",(s+i));*/
return (s+i);
}
int carac_valide(char c)
{
if(((c <'A')||(c >'Z'))&&((c <'a')||(c >'z')))
return 0;
return 1;
}
char precar_bis(char *s)
{
char *c;
char f;
c=precar(s);
f=(*c);
printf("le caractere le premier est %c\n",f);
return f;
}
char * dercar (char * s){
int l=0;
l=strlen(s);
while(((s[l]<'A')||(s[l]>'Z'))&&((s[l]<'a')||(s[l]>'z'))&&(l>0))
{
l--;
}
if((s[l]==9)||(s[l]==32))
printf("cette chaine ne contient que d'espaces et tabulations\n");
/*printf("\"precar\" dit que l'adrs du 1er char est %p \n",(s+l));*/
return (s+l);
}
char dercar_bis(char *s)
{
char *c;
char f;
c=dercar(s);
f=(*c);
printf("le caractere le premier est %c\n",f);
return f;
}
/*
int aller(char * s)
{
if((s[0]=='a')&&(s[1]=='l')&&(s[2]=='l')&&(s[3]=='e')&&(s[4]=='r'))
return 1;
else
return 0;
}
*/
int valide(char * s)
{
char * p;
char * r;
int i=0;
p=precar(s);
r=dercar(s);
if(((*r)=='r')&&((*(r-1))=='e'))
{
if(((*p)=='a')&&((*(p+1))=='l')&&((*(p+2))=='l')&&((*(p+3)=='e')&&((*(p+4))=='r')&&((p+4)==r)))
{
printf("nous rejetons le verbe aller avec regret \n");
return 0;
}
}
printf("ce verbe est du permier groupe\n");
return 1;
}
char * copier_verbe(char *s)
{
int i=0;
char * dest=(char *)malloc(455*sizeof(char));
char * p;
p=precar(s);
while(carac_valide(*(p+i)))
{
(*(dest+i))=(*(p+i));
i++;
}
dest[i]='\0';
return dest;
}
int verbe_dans_dico(char*s)
{
int i=0;
while(dico[i]!='\0')
{
if(!strcmp(copier_verbe(s),dico[i]))
return 1;
i++;
}
return 0;
}
char * saisie()
{
char * verbe;
verbe = (char *)malloc(343 * sizeof(char));
printf("please enter un verbe du premier groupe\n");
verbe=gets(verbe);
printf("vous voulez conjuger le verbe : %s OK! \n",copier_verbe(verbe));
return verbe;
}
int est_une_voyelle(char c)
{
int i;
for(i=0;i<6;i++)
{
if(voyelles[i]== c)
return 1;
}
return 0;
}
char * concat(char * dest, char *src, int n)
{
int i=0;
int j=0;
int long1,long2;
char * res;
long1=strlen(dest);
long2=strlen(src);
res=(char *)malloc((long1 + long2+1) * sizeof(char));
while(i<= (long1-n))
{
res[i]=dest[i];
i++;
}
while(src[j]!='\0')
{
res[long1-n+j]=src[j];
j++;
}
res[long1-n+j]='\0';
return res;
}
void premier_cas(char *verbe)
{
int j=0;
for(j=0;j<3;j++)
{
printf("%s %s \n",(*(prenom+j)),concat(copier_verbe(verbe),term[0][j],2));
}
for(j=0;j<3;j++)
{
printf("%s %s\n",(*(prenom+j+3)) ,concat(copier_verbe(verbe),term[1][j],2));
}
}
void deuxieme_cas(char * verbe)
{
int j=0;
for(j=0;j<3;j++)
{
printf("%s %s \n",(*(prenom+j)),concat(copier_verbe(verbe),term[2][j],2));
}
for(j=0;j<3;j++)
{
printf("%s %s\n",(*(prenom+j+3)) ,concat(copier_verbe(verbe),term[3][j],2));
}
}
void troisieme_cas(char * verbe)
{
int j=0;
for(j=0;j<3;j++)
{
printf("%s %s \n",(*(prenom+j)),concat(copier_verbe(verbe),term[4][j],3));
}
for(j=0;j<3;j++)
{
printf("%s %s\n",(*(prenom+j+3)) ,concat(copier_verbe(verbe),term[5][j],3));
}
}
void conjugaison (char * verbe)
{
char *r;
r=dercar(verbe);
if(*(r-2)=='g')
deuxieme_cas(verbe);
else
if(est_une_voyelle((*(r-3))))
troisieme_cas(verbe);
else
premier_cas(verbe);
}
void main ()
{
char * s =saisie();
printf("%s fait %d caracteres\n",copier_verbe(s),strlen(copier_verbe(s)));
if(valide(s))
{
if(verbe_dans_dico(s))
{
printf("le verbe est dans notre dictionnaire, debut conjugaison:\n");
conjugaison(s);
}
else
printf("le verbe n'est pas dans notre dictionnaire A+!\n");
}
/**********************TEST DES TROIS TABLEAUX CI-DESSOUS ****************************/
/*
for(i=0;i<6;i++)
printf("les voyelles sont: %c\n",voyelles[i]);
*/
/*
for(i=0;i<6;i++)
printf("les prenoms sont: %s\n",(*(prenom+i)));
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
printf("term[%d][%d] = %p\n",i,j,&term[i][j]); //affiche l'adresse du terme i j
printf("term[%d][%d] = %s\n",i,j,*(&term[i][j])); //affiche le continue de l'adresse i j
}
}
*/
}