1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
#include <stdio.h>
#include <string.h>
#define N 10 //Longueur par defaut d'un tablo contenant un mot
#define V 4 //Nombre de mot par defo de mot pouvant etre contenu dans le tablo
void saisie_code(char codeC[V][N],int codeL[2],int NbMot)
{
int i;
char mot[N];
for(i=0;i<NbMot;i++){
printf("Saisie du mot %d : ",i+1);
scanf("%s",mot);
strcpy(codeC[i],mot);
printf("longueur du mot : ");
scanf("%d",&codeL[i]);
}
}
void prefixe(char codeC[V][N],int codeL[2],int NbMot)
{
int i,j,diff,LgTest,Lg1;
int prefix = 0;
char Mot1[N];
char MoTest[N];
for(i=0;(i<NbMot) && (prefix != 1);i++){
strcpy(Mot1,codeC[i]);
Lg1 = codeL[i];
for(j=0;(j<NbMot) && (prefix != 1);j++){
if(j!=i){
diff = 0;
strcpy(MoTest,codeC[j]);
LgTest = codeL[j];
//Test sur la longueur des mots (si Mot prefix > Mot)
if(Lg1>LgTest)
diff = 1;
else{
//printf("Mot1 : %s & Mot2: %s",Mot1,MoTest);
if(strncmp(MoTest,Mot1,Lg1)) //si les chaines sont !=
diff = 1;
}
if(diff == 0)
prefix = 1;
}
}
}
if(prefix == 1){
printf("Le Code ne respecte pas les conditions du PREFIXE !\n");
printf("Condition du prefixe -> Aucun mot de code nest le debut dun autre\n");
}
else{
printf("Le Code respecte les conditions du PREFIXE !\n");
printf("Condition du prefixe -> Aucun mot de code nest le debut dun autre\n");
}
}
void suffixe(char codeC[V][N],int codeL[2],int NbMot)
{
int i,j,diff,LgTest,Lg1,start;
int sufix = 0;
char Mot1[N];
char MoTest[N];
char NMot[N];
for(i=0;(i<NbMot) && (sufix != 1);i++){
strcpy(Mot1,codeC[i]);
Lg1 = codeL[i];
for(j=0;(j<NbMot) && (sufix != 1);j++){
if(j!=i){
diff = 0;
strcpy(MoTest,codeC[j]);
LgTest = codeL[j];
if(Lg1>LgTest)
diff = 1;
else{
start = LgTest - Lg1;
//x = 0;
strncpy(NMot,&MoTest[start],LgTest);
/*for(k=start;k<LgTest;k++){
NMot[x] = MoTest[k];
x++;
}*/
NMot[LgTest] =0;
printf("NMOT : %s\n",NMot);
if(strncmp(Mot1,NMot,Lg1)) //si les chaines sont !=
diff = 1;
}
if(diff == 0)
sufix = 1;
}
}
}
if(sufix == 1){
printf("Le Code ne respecte pas les conditions du SUFFIXE !\n");
}
else{
printf("Le Code respecte les conditions du SUFFIXE !\n");
}
}
int main(int argc, char** argv)
{
int NbMot;
char codeC[V][N]; //contenu des mots
int codeL[2]; // longueur des mots
printf("Nombre de mot du code : ");
scanf("%d",&NbMot);
saisie_code(codeC,codeL,NbMot);
prefixe(codeC,codeL,NbMot);
suffixe(codeC,codeL,NbMot);
return 0;
} |
Partager