Tuesday, November 6, 2007

3 Address Conversion

Program : 3 Address Conversion



# include<stdio.h>

# include<conio.h>

# include<string.h>


void main() //main function

{



int i,j,ctr,n,k,l,f,z,m1;

char exp[30];

char temp[8];

char m[10]={'P','Q','R','S','T','U','V','W','X','Y'};

clrscr();

ctr=n=k=l=f=z=m1=0; //initialize variables as 0

printf("Enter the expression");

gets(exp); //get input expression



while(strlen(exp)!=5)

{

for(i=2;i<strlen(exp);i++)

{



if(exp[i]=='(') //if scanned character is (

{

k=i;

j=0;



while(exp[k+1]!=')') //until a ) is reached

{

temp[j]=exp[k+1];

j++; //increment j and k

k++;

}



exp[i]=m1[m];

temp[j]='\0';

printf("\n%c=%s",m1[m],temp);

m1++;

ctr=l;

n=i+1;



while(exp[ctr+n-1]!=')')

{

ctr++;

}



for(z=n,f=n+ctr;f<strlen(exp);f++,z++)

{

exp[z]=exp[f];

}



exp[z]='\0';

}

}



for(i=2;i<strlen(exp);i++)

{



if((exp[i]=='+')||(exp[i]=='-')) //if character is a + or - operator

{

k=i;

j=0;



for(k=i-1;k<i+2;k++)

{

temp[j]=exp[k];

j++;

}



exp[i-1]=m1[m];

temp[j]='\0';

printf("\n%c=%s",m1[m],temp);

m1++;



for(z=i;z<strlen(exp);z++)

{

exp[z]=exp[z+2];

}





exp[z]='\0';

}



for(i=2;i<strlen(exp);i++)

{

//if character is a * or / operator

if((exp[i]=='*')||(exp[i]=='/'))


{

k=i;

j=0;



for(k=i-1;k<i+2;k++)

{

temp[j]=exp[k];

j++;

}



exp[i-1]=m1[m];

temp[j]='\0';

printf("\n%c=%s",m1[m],temp);

m1++;



for(z=i;z<strlen(exp);z++)

{

exp[z]=exp[z+2];

}

exp[z]='\0'; //initialize final character as \0

}

}

}


}

printf("\n%s",exp);

getch();

}

0 comments: