데이터 구조 식 값 구하 기1
입력 형식: 총 1 줄, 산식 입 니 다.(산식 길이 < = 30 그 중 모든 데 이 터 는 0 ~ 2 ^ 31 - 1 범위 내).
출력 형식: 표현 식 의 값 입 니 다.
샘플 입력: 여기에 입력 그룹 을 드 립 니 다.예 를 들 면:
1 + (3 + 2) (7 ^ 2 + 69) / (2) 출력 사례: 여기에 해당 하 는 출력 을 드 립 니 다.예 를 들 면:
258
나의 답
#include
#include
#include
#include
#define maxsize 310
bool isNum(char ch);
int Calculate(int a, char str, int b);
bool CompareChar(char a, char b);
int main()
{
char ch[maxsize];
int num[maxsize];
char str[maxsize];
int i = 0;
gets(ch);
int topn, topc;
topn = 0;
topc = 0;
for (int i = 0; i < 310; i++)
{
num[i] = 0;
str[i] = '0';
}
while (i < strlen(ch))
{
if (isNum(ch[i]))
{
while (isNum(ch[i]))
{
num[topn] = num[topn] * 10 + (ch[i++] - '0');
}
topn++;
continue;
}
else
{
if (ch[i] == '(') str[topc++] = ch[i];
else if (ch[i] == ')')
{
while (str[topc - 1] != '(')
{
num[topn - 2] = Calculate(num[topn - 2], str[topc - 1], num[topn - 1]);
num[topn - 1] = 0;
topc--;
topn--;
}
topc--;
}
else
{
if (topc == 0) str[topc++] = ch[i];
else if (CompareChar(ch[i], str[topc - 1])) str[topc++] = ch[i];
else
{
while (!CompareChar(ch[i], str[topc - 1]))
{
if (str[topc - 1] == '(') break;
num[topn - 2] = Calculate(num[topn - 2], str[topc - 1], num[topn - 1]);
num[topn - 1] = 0;
topc--;
topn--;
if (topc == 0) break;
}
str[topc++] = ch[i];
}
}
}
i++;
}
while (topn != 1 && topc > 0)
{
num[topn - 2] = Calculate(num[topn - 2], str[topc - 1], num[topn - 1]);
topn--;
topc--;
}
printf("%d", num[0]);
}
bool isNum(char ch)
{
if (ch <= '9' && ch >= '0') return true;
else return false;
}
int Calculate(int a, char str, int b)
{
if (str == '*') return a * b;
else if (str == '/') return a / b;
else if (str == '-') return a - b;
else if (str == '+') return a + b;
else return pow(a, b);
}
bool CompareChar(char a, char b)
{
int x = 0;
int y = 0;
if (a == '+' || a == '-') x = 1;
else if (a == '*' || a == '/') x = 2;
else if (a == '^') x = 3;
else if (a == '(') x = 4;
if (b == '+' || b == '-') y = 1;
else if (b == '*' || b == '/') y = 2;
else if (b == '^') y = 3;
else if (b == '(') y = 4;
if (x > y) return true;
else return false;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.