#include <cstdio>
#include <cstring>
char s[100+10];
char buf[100+10];
int i;
bool getMul(int&);
bool getItem(int&);
bool getExpr(int&);
bool getMul(int &x){
if(s[i]==' '){
i++;
return getMul(x);
}
if(s[i]=='('){
i++;
if(getExpr(x)==false) return false;
if(s[i]!=')') return false;
i++;
return true;
}
int j=0,k;
if(s[i]=='-'||s[i]=='+') buf[j++]=s[i++];
for(k=0;s[i]>='0'&&s[i]<='9';i++,k++)
buf[j++]=s[i];
buf[j]=0;
if(k==0) return false;
sscanf(buf,"%d",&x);
return true;
}
bool getItem(int &x){
int y;
if(getMul(x)==false) return false;
while(s[i]=='*'||s[i]==' '){
if(s[i]==' ') {i++;continue;}
i++;
if(getMul(y)==false) return false;
x*=y;
}
return true;
}
bool getExpr(int &x){
int y;
char c;
if(getItem(x)==false) return false;
while(s[i]=='+'||s[i]=='-'||s[i]==' '){
if(s[i]==' ') {i++;continue;}
c=s[i];
i++;
if(getItem(y)==false) return false;
if(c=='+') x+=y;
else x-=y;
}
return true;
}
int main(){
int x;
i=0;
gets(s);
if(getExpr(x)==false||s[i])
printf("WRONG");
else printf("%d",x);
return 0;
}
#include <cstring>
char s[100+10];
char buf[100+10];
int i;
bool getMul(int&);
bool getItem(int&);
bool getExpr(int&);
bool getMul(int &x){
if(s[i]==' '){
i++;
return getMul(x);
}
if(s[i]=='('){
i++;
if(getExpr(x)==false) return false;
if(s[i]!=')') return false;
i++;
return true;
}
int j=0,k;
if(s[i]=='-'||s[i]=='+') buf[j++]=s[i++];
for(k=0;s[i]>='0'&&s[i]<='9';i++,k++)
buf[j++]=s[i];
buf[j]=0;
if(k==0) return false;
sscanf(buf,"%d",&x);
return true;
}
bool getItem(int &x){
int y;
if(getMul(x)==false) return false;
while(s[i]=='*'||s[i]==' '){
if(s[i]==' ') {i++;continue;}
i++;
if(getMul(y)==false) return false;
x*=y;
}
return true;
}
bool getExpr(int &x){
int y;
char c;
if(getItem(x)==false) return false;
while(s[i]=='+'||s[i]=='-'||s[i]==' '){
if(s[i]==' ') {i++;continue;}
c=s[i];
i++;
if(getItem(y)==false) return false;
if(c=='+') x+=y;
else x-=y;
}
return true;
}
int main(){
int x;
i=0;
gets(s);
if(getExpr(x)==false||s[i])
printf("WRONG");
else printf("%d",x);
return 0;
}
Последнее изменение: Суббота, 15 Август 2020, 02:35