Monday, 5 February 2018

Program in C to recognize arithmetic expression

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<windows.h>
char* list[100];
char* listF[100];
int top=-1;
int topF=-1;
void checkKey(int f,int t,char* ss)
{

int fo=0;
for(int k=0;k<=top;k++)
{
char* pt=list[k];
fo=0;

for(int j=0;j<strlen(pt);j++)
{
if((f+j)<strlen(ss)&&ss[f+j]==pt[j]&&(f+j)<t)
{
    fo=1;
}
else
{


fo=0;
break;
}
}

if(fo==1)
{
printf("(key)");
return;
}
}
}
void append(char* s, char c) {
        int len = strlen(s);
        s[len] = c;
        s[len+1] = '\0';
}
void printUpto(char* str,int f,int t)
{
printf(" ");
char k[100]="";
int l=0;

for(int i=f;i<=t;i++)
{
    append(k,str[i]);
        l+=1;
    printf("%c",str[i]);
}
//printf("\n");
int isdig=0;
for(int o=0;o<strlen(k);o++)
{
    isdig=0;
for(char y='0';y<='9';y++)
  {
      if(k[o]==y)
  {
      isdig=1;
      break;
}
  }
  if(isdig==0)
  {
      break;
  }
}
if(isdig==1)
    printf("(digit)");
int isal=0;
for(int o=0;o<strlen(k);o++)
{
    isal=0;
for(char y='a',Y='A';y<='z';y++,Y++)
  {
      if(k[o]==y||k[o]==Y)
  {
      isal=1;
      break;
}
  }
  if(isal==0)
  {
      break;
  }
}
if(isal==1)
    printf("(alpha)");

}

int subIt(int f,char* ss,char* mc)
{
int fo=0;
int last=0;
for(int i=f;i<strlen(ss);i++)
{
fo=0;
int en=0;
int plen=0;
for(int k=0;k<=topF;k++)
{
en=1;
char* pt=listF[k];
plen=strlen(pt);

for(int j=0;j<strlen(pt);j++)
{
if((i+j)<strlen(ss)&&ss[i+j]==pt[j])
fo=1;
else
{
fo=0;
break;
}
}
if(fo==1&&i!=0)
{
checkKey(last,i,ss);
printUpto(ss,last,i-1);
if(i!=strlen(ss)-1)
printUpto(ss,i,i+plen-1);
last=i+plen;
en=0;
i=i+plen-1;
}
}

}
return -1;
}
void addList(char* str)
{
top+=1;
list[top]=str;
}
void addFList(char* str)
{
topF+=1;
listF[topF]=str;
}
void fill()
{
   
addFList("(");
addFList(")");
addFList(" ");
addFList("=");
addFList("+");
addFList("-");
addFList("*");
addFList("/");
addFList("%");
addFList("{");
addFList("}");
addFList("?");

}
void Match(char* str)
{
int v=0;
int next=0;
int y=subIt(next,str,listF[0]);
if(y!=-1&&y!=0)
{
printUpto(str,next,y-1);
next=y;
}
}
int main()
{
char ip[500];
int len;

fill();
puts("Enter your message");
gets(ip);
len=strlen(ip);
strcat(ip,"(");
Match(ip);

getch();
return 0;
}
Thanks

No comments:

Post a Comment