Vua Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
kinh doanh, bán hàng, tư vấn, bảo hiểm Những cá nhân, tổ chức, đại lý,muốn bán, hợp đồng bảo hiểm
Thursday, April 23, 2015

lập trình c/c++ tính giá trị của 1 biểu thức bất kỳ, giông máy tính casio

#include<iostream>
#include<time.h>
using namespace std;
long tinh(char *s)
{
char a[100],dau[100],b[100],e[100];
int i,d=0;
for(i=0;i<strlen(s);i++) if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/' || s[i]=='(' || s[i]==')') dau[d++]=s[i];
if(d==0) return atol(s);
for(i=0;i<d;i++) 
{
if(dau[i]!='*' && dau[i]!='/') 
{
int m,j;
char c;
for(m=0;m<strlen(s);m++)
{
if(s[m]=='+' || s[m]=='-' || s[m]=='('){c=s[m]; break;}
a[m]=s[m];
}
a[m]='\0';
if(c=='+' || c=='-')
{
int dd=0;
for(j=m+1;j<strlen(s);j++) b[dd++]=s[j];
b[dd]='\0';
if(c=='+') return tinh(a)+tinh(b);
else
{//doi dau chuoi b
j=0;
while(j<strlen(b))
{
while(b[j]!='(' && j<strlen(b))
{
if(b[j]=='+') b[j]='-';
else if(b[j]=='-') b[j]='+';
j++;
}
j++;dd=1;
while(j<strlen(b))
{
if(b[j]=='(') dd++;
if(b[j]==')') dd--;
if(dd==0) break;
j++;
}
j++;
}
return tinh(a)-tinh(b);
}
}
else if(c=='(')
{
char c1,c2,c3,a1[100],a2[100],a3[100],a4[100];
int p1,p2,p3,p4,dem=1;
p1=m;p2=p1+1;
while(p2<strlen(s))
{
if(s[p2]=='(') dem++;
else if(s[p2]==')') dem--;
if(dem==0) break;
p2++;
}
p4=0;
for(p3=p1+1;p3<p2;p3++) a2[p4++]=s[p3];
a2[p4]='\0';

p1--;
c1=s[p1];
for(p3=0;p3<p1;p3++) a1[p3]=s[p3];
a1[p3]='\0';

c2=s[p2+1];
if(c2=='*' || c2=='/')
{
p2+=2;
p4=0;
loop:;
while(p2<strlen(s) && s[p2]!='-' && s[p2]!='+' && s[p2]!='(') a3[p4++]=s[p2++];
if(s[p2]=='(')
{
p3=p2+1;
dem=1;
while(p3<strlen(s))
{
if(s[p3]=='(') dem++;
else if(s[p3]==')') dem--;
if(dem==0) break;
p3++;
}
for(p1=p2;p1<=p3;p1++) a3[p4++]=s[p1];
p2=p3+1;
goto loop;
}
a3[p4]='\0';
c3=s[p2];
p2++;p4=0;
while(p2<strlen(s)) a4[p4++]=s[p2++];
a4[p4]='\0';
}
else
{
c3=c2;
a3[0]='\0';
p4=0;p2+=2;
while(p2<strlen(s)) a4[p4++]=s[p2++];
a4[p4]='\0';
}
if(c3=='-')
{
p4=0;
while(p4<strlen(a4))
{
while(a4[p4]!='(' && p4<strlen(a4))
{
if(a4[p4]=='+') a4[p4]='-';
else if(a4[p4]=='-') a4[p4]='+';
p4++;
}
p4++;dem=1;
while(p4<strlen(a4))
{
if(a4[p4]=='(') dem++;
if(a4[p4]==')') dem--;
if(dem==0) break;
p4++;
}
p4++;
}
}
long k=tinh(a2);
if(strlen(a1)>0)
{
if(c1=='*') k=tinh(a1)*k;
else if(c1=='/') k=tinh(a1)/k;
}
if(strlen(a3)>0)
{
if(c2=='*') k=k*tinh(a3);
else if(c2=='/') k=k/tinh(a3);
}
if(strlen(a4)>0)
{
if(c3=='+') k=k+tinh(a4);
else if(c3=='-') k=k-tinh(a4);
}
return k;
}
}
}
char c;
for(i=0;i<strlen(s);i++)
{
if(s[i]=='*' || s[i]=='/') break;
a[i]=s[i];
}
a[i]='\0';
long kq=atol(a);
c=s[i];
i++;
while(i<strlen(s))
{
d=0;
while(s[i]!='*' && s[i]!='/' && i<strlen(s)) a[d++]=s[i++];
a[d]='\0';
if(c=='*') kq*=atol(a);
else kq/=atol(a);
c=s[i];
i++;
}
return kq;
}
void xuly(char *s,int x)
{
char a[100],b[100];
int i,j,m;
ltoa(x,a,10);
if(s[0]=='x')
{
for(i=0;i<strlen(a);i++) b[i]=a[i];
for(j=1;j<strlen(s);j++) b[i++]=s[j];
b[i]='\0';
for(i=0;i<strlen(b);i++) s[i]=b[i];
s[i]='\0';
}
for(i=1;i<strlen(s);i++)
{
if(s[i]=='x')
{
if(s[i-1]>='0' && s[i-1]<='9')
{
for(j=0;j<i;j++) b[j]=s[j];
b[j++]='*';
for(m=0;m<strlen(a);m++) b[j++]=a[m];
for(m=i+1;m<strlen(s);m++) b[j++]=s[m];
b[j]='\0';
for(j=0;j<strlen(b);j++) s[j]=b[j];
s[j]='\0';
}
else
{
for(j=0;j<i;j++) b[j]=s[j];
for(m=0;m<strlen(a);m++) b[j++]=a[m];
for(m=i+1;m<strlen(s);m++) b[j++]=s[m];
b[j]='\0';
for(j=0;j<strlen(b);j++) s[j]=b[j];
s[j]='\0';
}
}
}
}
void bang(char *a,char *b)
{
int i;
for(i=0;i<strlen(b);i++) a[i]=b[i];
a[i]='\0';
}
void main()
{
FILE *t1=fopen("bai1.inp","r");
FILE *t2=fopen("bai1.out","w");
if(t1==NULL || t2==NULL) exit(0);
char s[1000],a[1000];
long n,x,gt;
fgets(s,100,t1);
fscanf(t1,"%ld",&n);
for(int i=1;i<=n;i++)
{
bang(a,s);
fscanf(t1,"%ld",&x);
xuly(a,x);
gt=tinh(a);
fprintf(t2,"%ld ",gt);
}
fcloseall();
}

tcaviet@gmail.com

0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts