您的位置:首页 > 编程语言 > Lua

UVA 327 - Evaluating Simple C Expressions

2014-09-29 18:53 337 查看
简单题,直接模拟。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <string>

using namespace std;

const int size = 26 + 4;
const int str_size = 200;
int x[size] , y[size] , z[size];

int main()
{
char str[str_size];
int cur = 0;
while((str[cur] = getchar())!=EOF)
{
for(int i = 0 ; i < 26 ; ++i)
{
x[i] = 0;
y[i] = i + 1;
z[i] = 0;
}

int r = 0;
int cnt1 = 0 , cnt2 = 0;
int pre = -1;
while(str[cur] != '\n' && str[cur] != EOF)
{
if(isalpha(str[cur]))
{
int t = str[cur] - 'a';
x[t] = 1;
if(cnt1 == 2) { ++y[t]; cnt1 = 0 ; }
else if(cnt2 == 2) { --y[t]; cnt2 = 0; }
if(cnt1 == 1) { r += y[t]; cnt1 = 0;}
else if(cnt2 == 1) { r -= y[t]; cnt2 = 0; }
if(pre == -1) r = y[t];
pre = t;
}
if(str[cur] == '+')
{
++cnt1;
if(cnt1 == 2 && cnt2 == 0 && pre != -1)
{ ++z[pre]; cnt1 = 0; }
}
if(str[cur] == '-')
{
++cnt2;
if(cnt2 == 2 && cnt1 == 0 && pre != -1)
{ --z[pre]; cnt2 = 0;}
}
str[++cur] = getchar();
}

str[cur] = 0;
cout << "Expression: " << str << endl;
cout << "    value = " << r << endl;
for(int i = 0 ; i < 26 ; ++i)
{
if(x[i]) cout << "    " << (char)(i + 'a') << " = " << y[i] + z[i] << endl;
}
cur = 0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: