#include <stdio.h>
#include <conio.h>
main()
{
char key1,key2;
if(key1=getch()==0)
key2=getch();
switch(key2)
{
case 59:puts("you press F1");
break;
case 60:puts("you press F2");
break;
case 61:puts("you press F3");
break;
case 62:puts("you press F4");
break;
case 63:puts("you press F5");
break;
case 64:puts("you press F6");
break;
case 65:puts("you press F7");
break;
case 66:puts("you press F8");
break;
case 67:puts("you press F9");
break;
case 68:puts("you press F10");
break;
}
getchar();
}
|
#include <stdio.h>
#include <conio.h>
#define max 100
typedef enum {lpar,rpar,min,pul,mul,div,mod,eos,operand} pre;
char expr[]={"a/b-c+d*e-a*c"};
int val[]={0,19,12,12,13,13,13,0};
pre stack[max];
int addQ(int *top,int item) ;
int delQ(int *top);
void print_token(pre token);
pre get_token(char *simbol,int *n);
/************************************************************/
main()
{
pre token;
char simbol;
int n=0,tops=0,i;
stack[0]=eos;
for(i=0,token=get_token(&simbol,&n);i<14;++i,token=get_token(&simbol,&n))
{
if(token==operand)
printf("%c",simbol);
else
if(val[token]>val[stack[tops]])
addQ(&tops,token);
else
{
while(tops!=0)
print_token(delQ(&tops));
addQ(&tops,token);
}
} //end for
getch();
}
/*******************************************************/
int addQ(int *tops,int item)
{
if(*tops==max-1)
return(125);
else
stack[++*tops]=item;
}
/*****************************************************/
int delQ(int *tops)
{
if(*tops==-1)
return(126);
return(stack[(*tops)--]);
}
/*********************************************/
pre get_token(char *simbol,int *n)
{
*simbol=expr[(*n)++];
switch(*simbol)
{
case "(":return lpar;
case ")":return rpar;
case "+":return pul;
case "*":return mul;
case "-":return min;
case "/":return div;
case "%":return mod;
case "\0":return eos;
default :return operand;
}
}
/***************************************************/
void print_token(pre token)
{
switch (token)
{
case lpar:printf("(");break;
case rpar:printf(")"); break;
case min:printf("-");break;
case pul:printf("+"); break;
case div:printf("/"); break;
case mod:printf("%"); break;
case mul:printf("*"); break;
}
}
|