今天满课 开始想逃课出来写
但是今天老师弄了个考试
没办法
下午课还不能逃---因为是体育课
花了很长时间写了个挺恶心的
你先用这个交作业吧
不知道还来得及么?!
:
#include <stdlib.h>
#include <time.h>
int PrintE(float *Enum,char *Esign,int en)
{
int i;
for(i=0;i<en-1;i++)
{
if(Esign[i])
printf("%c",(int)Enum[i]);
else
printf("%f",Enum[i]);
}
printf("\n");
}
int Count(float *Enum,char *Esign,int en)
{
int i,j,es,Emins=1,ek;
while(en>2)
{
Emins=1;
for(i=0;i<en;i++)
{
if(Esign[i]==1)Emins=1;
if(Esign[i]<3&&Esign[i]&&Esign[i-1]==0&&Emins)
{
if(Esign[i]>=Esign[i+1])
if(Esign[i]==2||Esign[i]!=(Esign[i+2]-1))
{
switch((int)Enum[i])
{
case '*':Enum[i-1]=Enum[i-1]*Enum[i+1];Enum[i+1]=Enum[i-1];break;
case '/':Enum[i-1]=Enum[i-1]/Enum[i+1];Enum[i+1]=Enum[i-1];break;
case '+':Enum[i-1]=Enum[i-1]+Enum[i+1];Enum[i+1]=Enum[i-1];break;
case '-':Enum[i-1]=Enum[i-1]-Enum[i+1];Enum[i+1]=Enum[i-1];break;
default:;
}
Esign[i]=4;
Esign[i-1]=4;
}
}
if(Enum[i]==')')
Emins=0;
}
en=Move(Enum,Esign,en);
for(i=0;i<en;i++)
{
if(Enum[i]=='('&&Esign[i+1]==0&&Enum[i+2]==')')
{
Esign[i]=4;
Esign[i+2]=4;
}
}
en=Move(Enum,Esign,en);
}
return en;
}
int Move(float *Enum,char *Esign,int en)
{
int i,es;
float Enumr[30];
char Esignr[30];
for(es=0,i=0;i<en;i++)
{
if(Esign[i]!=4)
{
Enumr[es]=Enum[i];
Esignr[es++]=Esign[i];
}
}
en=es;
for(i=0;i<en;i++)
{
Enum[i]=Enumr[i];
Esign[i]=Esignr[i];
}
return en;
}
main()
{
int i=0,j=0,en=0,es=0;
float num[10][10],Enum[30]={0};
char Expression[50]="(5+(8*(5-4)+2)*12)/5",Esign[30],E_f[50];
long t_start=0,t_end=0;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
for(j=0;j<10;j++)
num[i][j]=random(1000);
/*puts("Input Expression:");
gets(Expression);*/
t_start=biostime(0,t_start);
i=0;
printf("%s=",Expression);
while(Expression[i])
{
es=0;
j=0;
while(Expression[i]<='9'&&Expression[i]>='0'||Expression[i]=='.')
{
E_f[j++]=Expression[i];
i++;
es=1;
}
if(es)
{
E_f[j]='\0';
Enum[en]=atof(E_f);
Esign[en]=0;
en++;
}
Enum[en]=Expression[i];
switch(Expression[i])
{
case '(':
case ')':Esign[en]=3;break;
case '*':
case '/':Esign[en]=2;break;
case '+':
case '-':Esign[en]=1;break;
case 0:break;
default:printf("error in '%c' !",Expression[i-1]);getch();exit(1);
}
en++;
i++;
}
en=Count(Enum,Esign,en);
PrintE(Enum,Esign,en);
t_end=biostime(0,t_end);
for(en=1,j=0;j<10;j++)
for(i=0;i<10;i++)
{
if(num[i][j]==Enum[0])
{
printf("<%d,%d> ",i,j);
en=0;
}
}
if(en)
printf("Not find!");
printf("\nspent time %ld->%ld=%ld",t_start,t_end,t_start-t_end);
getch();
}
高手们 来说说你们的想法 我想学学怎么编这个东西
主要说你们的
我的这个程序写的太恶心拉 就不用BS的话刺激我了