대괄호로 +, -, * 및/연산자를 지원하는 간단한 계산기를 만들려고했습니다. 예를 들어 ((2.1 - 5.6)*4)+(2.8+2/2.2)
은 -10.29 여야합니다 ... 나는 이렇게 시도했지만 바지와 만 작동합니다. 사용자 입력에 대괄호가 포함되어 있는지 어떻게 처리해야할지 모르겠습니다. 여기브래킷이있는 간단한 계산기
float calc(void)
{
float x,y, parse;
char c;
int test = scanf("%f %c %f", &x,&c,&y);
if (test == 0){ // if '(' starts equation
parse = calc();
}
else{
if (c == '-'){
return x - y;
}
else if (c == '/'){
return x/y;
}
else if (c == '+'){
return x + y;
}
else if (c == '*'){
return x * y;
}
}
}
당신은 두 가지 문제로이 휴식해야한다 : 자신의 내면의 내용을 찾아 그들을 쌍, 1) 모든 브래킷을 찾을 수; 2)이 내용을 평가하십시오. 재귀 적 코드가됩니다. 자세히 설명하는 범위는 StackOverflow의 범위를 벗어납니다. – Floris
http://en.wikipedia.org/wiki/Shunting-yard_algorithm –
또는 심지어 http://stackoverflow.com/questions/4582398/writing-a-simple-equation-parser – Floris