l'importance d'un programme en langage c pour un automate de langage (aabb*)*





l'importance d'un programme en langage c pour un automate de langage (aabb*)*

programe en langage c pour automate de langage (aabb*)*


 ///Author: Karara Mohamed  @   tutodev1.blogspot.com/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include<string.h>
#define taille 100
    int TR[10][26];
    int a,b;

void lireAFD(){
int i,j;
    for(i=0;i<3;i++){
    for(j=0;j<26;j++){TR[i][j]=-1;}///Initialise le table de tansition
                      }

                      ///table de transition de AFD pour la langage (aabb*)*
TR[0][0]=1;
TR[1][0]=2;
TR[2][1]=3;
TR[3][0]=1;
TR[3][1]=3;

}




int AFD(char *TM) {///pour voir si les mots sont Reconnu  ou non
int e=0,i=0,lgtm=strlen(TM);
char s=TM[i];
while((TR[e][(int)(s-'a')]!=-1)&&(i<lgtm)){
e=TR[e][(int)(s-'a')];
i++;
s=TM[i];
}
if((e==3)){return 0;}

return -1;
}
void valid(char TM[]);///la fonction valid si une mot est reconnu,elle donne les droite de affiche (miroir,occ,pref fixe,suffixe
void liremot(char *TM){
        printf("donnez votre mot :");
        scanf("%s",TM);
  if(AFD(TM)==0){printf("le mot reconnu\n");///si mote reconnu
    valid(TM);
  }
       else { printf("le mot non  reconnu\n");}///si non
}
void Miroire(char T[]){///pour miroire

int i,n=strlen(T);
             printf("votre Miroire est:");
for(i=n;i>=0;i--){

    printf("%c",T[i]);
}
puts("\n");
}
void Occu(char T[] ){///pour conte le a et b
int i,n=strlen(T);
a=0,b=0;
for(i=0;i<n;i++){
    if(T[i]=='a'){a++;}
    if(T[i]=='b'){b++;}
}
            printf("vous avez a=%d et b=%d\n",a,b);
}
void pref(char TM[]){
    int i,j,k,n=strlen(TM);
              printf("les prefixes de m sont:\n");
              k=n;
             for(i=0;i<n;i++){
                for(j=0;j<k;j++){printf("%c",TM[j]);}puts("\n");k=k-1;}
}
void suff(char TM[]){
    int i,j,k,n=strlen(TM);
                printf("les suffixes de m sont:\n");
                k=n;
                for(i=0;i<n;i++){
                for(j=i;j<k;j++){printf("%c",TM[j]);}puts("\n");}
}
void conjj(char TM[]){
   int i,j,t=0,n=strlen(TM);
                 printf("les conj de m sont =\n");
                 printf("-%s\n",TM);
 for(i=n;i>=0;i--){

                  printf("%c",TM[i]);
}
puts("\n");
a=0,b=0;
for(i=0;i<n;i++){
    if(TM[i]=='a'){a++;}
    if(TM[i]=='b'){b++;}}
for(i=0;i<a;i++){printf("%c",'a');
    for(j=0;j<1;j++){printf("%c",'b');t++;}
}
  b=b-t;
  if(b>0){
for(i=0;i<b;i++){printf("%c",'b');}}
puts("\n");
t=a;
for(i=0;i<b;i++){printf("%c",'b');
    for(j=0;j<1;j++){if(t>0)printf("%c",'a');t--;}
}

}
int main()
{  char TM[taille];
    lireAFD();
   int  choix;
    do {        system("cls");///meun principale
         printf("\t\t\t================MENU================\n\n");
         printf("\t\t\t1-lire un mot\n");
         printf("\t\t\t2-QUIT\n");
         printf("\t\t\t");
         scanf("%d",&choix);
         switch(choix){
         case 1:system("cls");liremot(TM);system("pause>null");break;
         case 2:system("cls"); printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBYEEEEEEEEEE\n\n\n\n"); system("pause>null");break;
         default:
             system("cls");
            printf("\t\t\t Erreur de choix !!!!!!!!!!!!!!!!!! \n");
            Sleep(1500); system("cls");

                        }
        }while(choix!=2);
    return 0;
}
void valid(char TM[]){///menu de valid
    int choix;
    do{
         printf("\t\t\t================MENU(2)================\n\n");
         printf("\t\t\t1-Miroire de m\n");
         printf("\t\t\t2-Occurrence de a et b\n");
         printf("\t\t\t3-les mots conjugues\n");
         printf("\t\t\t4-les prefixes de m\n");
         printf("\t\t\t5-les suffixes de m\n");
         printf("\t\t\t6-QUIT\n");
         printf("\t\t\t");
            scanf("%d",&choix);
         switch(choix){
         case 1:system("cls");Miroire(TM);system("pause>null"); break;
         case 2:system("cls");Occu(TM);system("pause>null");break;
         case 3:system("cls");conjj(TM);system("pause>null");break;
         case 4:system("cls");pref(TM);system("pause>null");break;
         case 5:system("cls");suff(TM);system("pause>null");break;
         case 6:system("cls");break;
         default:
             system("cls");
            printf("\t\t\t Erreur de choix !!!!!!!!!!!!!!!!!! \n");
            Sleep(1500); system("cls");
               }
          }while(choix!=6);
              }