접두사 계산
시간 제한:
1000 ms | 메모리 제한:
65535 KB
난이도:
3
묘사 하 다.
먼저 접미사 식 이 무엇 인지 설명해 주세요.
예 를 들 어 2 + (3 + 4) * 5 와 같은 우리 가 가장 흔히 볼 수 있 는 식 은 접미사 식 이다.
그리고 접미사 식 을 연산 순서에 괄호 를 넣 으 면: (2 + (3 + 4) * 5)
그리고 괄호 앞 에 연산 자 를 쓰 면 + (2 * (+ (3 4) 5)
괄호 빼 면: + 2 * + 3, 4, 5
마지막 으로 이 식 은 이 표현 식 의 접두사 표시 입 니 다.
접두사 표현 식 을 드 리 겠 습 니 다. 접두사 값 을 계산 하 십시오.
예 를 들 면:
+ 2 * + 3, 4, 5 의 값 은 37 입 니 다.
입력
여러 조 의 테스트 데이터 가 있 고 각 조 의 테스트 데 이 터 는 한 줄 을 차지 하 며 임 의 두 조작 자 사이 에 임 의 두 조작 수 사이 에 조작 수 와 조작 자 사이 에 모두 빈 칸 이 있다.입력 한 두 조작 수 는 소수 일 수 있 습 니 다. 데 이 터 는 입력 한 수 는 모두 양수 이 고 모두 10 보다 적 으 며 조작 수 는 500 을 초과 하지 않 습 니 다.
EOF 를 입력 으로 끝 나 는 표지 입 니 다.
출력
각 그룹의 데이터 에 대해 이 접두사 표현 식 의 값 을 출력 합 니 다.출력 결 과 는 두 개의 소 수 를 유지 합 니 다.
샘플 입력
+ 2 * + 3 4 5
+ 5.1 / 3 7
샘플 출력
37.00
5.53
:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int i,len;
char a[1000];
double f()
{
double sum=0;
int n;
switch(a[i])
{
case '+':i++;return f() + f();
case '-':i++;return f() - f();
case '*':i++;return f() * f();
case '/':i++;return f() / f();
case ' ':i++;return f();
default:
sscanf(&a[i],"%lf%n",&sum,&n);
i+=n;return sum;
}
}
int main()
{
while(gets(a))
{
len=strlen(a);
i=0;
printf("%.2lf
",f());
memset(a,0,sizeof(a));
}
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.