۱۷-بهمن-۱۳۸۶, ۱۴:۴۵:۵۷
سلام خدمت دوستان
من یه ماشین حساب نوشتم که چار عمل اصلی رو با در نظر گرفتن اولویتها انجام می ده . کسی می تونه اولویت پرانتزها رو بهش اضافه کنه؟
با تشکر.
من یه ماشین حساب نوشتم که چار عمل اصلی رو با در نظر گرفتن اولویتها انجام می ده . کسی می تونه اولویت پرانتزها رو بهش اضافه کنه؟
کد php:
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
int k,a[1000],y=26,avval=0,nomber=0,insert=0,max=0,amalgar[100];
int first=0,end=0,adad[100],pabaz[100],pabas[100];
int x;
unsigned short int far *screen=(unsigned short int far*) 0xb8000000;
char *c;
int FUNC(char *c)
{
*c=getch();
if(*c==0)
{
*c=getch();
return 1;
}
else return 0;
}
void por(int i,int j,int color)
{
screen[i*80+j]=color;
}
void backspase()
{
if(max!=0)
max--;
for(int i=nomber;i<1000;i++)
a[i-1]=a[i];
nomber--;
if(avval>0)
avval--;
else
{
por(24,y,219+256*7);
por(24,y-1,10*256+24);
y--;
}
}
void harfgozar()
{
for(int i=999;i>nomber;i--)
a[i]=a[i-1];
max++;
a[nomber]=*c;
if(y==50)
y=49;
if(a[nomber+1]==0)
a[nomber+1]=32;
}
void jadid()
{
for(int i=0;i<50;i++)
for(int j=0;j<80;j++)
if (j>25&&j<50&&i<30&&i>20)
if(i!=23)
por(i,j,219+256*7);
else
por(i,j,219+256*16);
else
por(i,j,219+256*9);
por(24,y,10*256+24);
for(i=0;i<100;i++)
{
amalgar[i]=0;
adad[i]=0;
pabaz[i]=0;
pabas[i]=0;
}
pabaz[-1]=0;
for(i=0;i<1000;i++)
a[i]=0;
}
void amaliat(int first,int end)
{
}
void mohasebe(int m)
{
int i=m+1,x=0,q=0,w=0;
while(a[i]!=0)
{
while(a[i]>47&&a[i]<59)
{
adad[x]=10*adad[x]+a[i]-48;
i++;
}
if(a[i]==40)
mohasebe(i);
while(a[i]<48&&a[i]!=0)
{
if(a[i]!=41&&a[i]!=40)
amalgar[x]=a[i];
if(a[i]==40)
{pabaz[q]=x+2;q++;}
if(a[i]==41)
{pabas[w]=x+2;w++;}
i++;
}
x++;
}
//for(int j1=-1;j1<x;j1++)
for(i=0;i<x;i++)
if(amalgar[i]==42)
{
adad[i]=adad[i]*adad[i+1];
for(int j=i;j<x;j++)
adad[j+1]=adad[j+2];
for(j=i;j<x;j++)
amalgar[j]=amalgar[j+1];
x--;
}
for(i=0;i<x;i++)
if(amalgar[i]==47)
{
adad[i]=adad[i]/adad[i+1];
for(int j=i;j<x;j++)
adad[j+1]=adad[j+2];
for(j=i;j<x;j++)
amalgar[j]=amalgar[j+1];
x--;
}
for(i=0;i<x;i++)
if(amalgar[i]==43)
{
adad[i]=adad[i]+adad[i+1];
for(int j=i;j<x;j++)
adad[j+1]=adad[j+2];
for(j=i;j<x;j++)
amalgar[j]=amalgar[j+1];
x--;
}
for(i=0;i<x;i++)
if(amalgar[i]==45)
{
adad[i]=adad[i]-adad[i+1];
for(int j=i;j<x;j++)
adad[j+1]=adad[j+2];
for(j=i;j<x;j++)
amalgar[j]=amalgar[j+1];
x--;
}
//if()
//amaliat(,)
}
void benevis()
{
for(int i=0;i<24;i++)
por(23,i+26,a[i+avval]+256*4);
}
void main()
{
a[-1]=40;
int lk=0;
int para=0;
jadid();
int k=FUNC(c);
while(*c!=27)
{
if((*c>47&&*c<59&&lk!=41)||((*c==42||*c==43||*c==45||*c==47)
&&((lk>47&&lk<59)||lk==41))||
(*c==40&&(lk==42||lk==43||lk==45||lk==47||lk==40||lk==0)||(*c==41&&((lk>47&&lk<59)||lk==41))&&(*c!=41||para>0)))
{
if(*c==40)
para++;
if(*c==41)
para--;
if(y>48)
avval++;
harfgozar();
if(nomber<1000)
nomber++;
y++;
lk=*c;
}
if((*c==75)&&(k==1))
{
int ezafe=0;
if(nomber>0)
nomber--;
if(y>26)
{
por(24,y,219+256*7);
por(24,y-1,10*256+24);
y--;
}
else
{
avval-=6;
if(avval<0)
{
ezafe=0-avval;
avval=0;
}
por(24,y,219+256*7);
y=y+5-ezafe;
if(y<26)
y=26;
por(24,y,24+256*10);
}
}
if(*c==13&¶==0)
{
a[max]=41;
mohasebe(-1);
printf("%d",adad[0]);
}
if((*c==8)&&(k==0)&&(nomber!=0))
backspase();
//printf("%d",*c);
benevis();
por(23,25,219+256*9);
if(avval!=0)
por(23,25,17+256*4);
por(23,50,219+256*9);
if(avval+23<max)
por(23,50,16+256*4);
k=FUNC(c);
}
}