HDU 1237 (간단한 계산기)

두 가지 범주로 나누어 디지털 조작자에 각 리드 :

  1. '*'이면, 최후의 번호가 판독 전류 승산에 판독하고, 그 결과 원래의 위치에 저장되어있는 경우, '/'유사.
  2. 때문에 문제의 '+'연산자 우선 순위로 읽으면 함께 디지털 판독을 저장할 필요는 '-'마찬가지로, 디지털 스토리지의 역.

문자가 '\ n'을 읽기의 끝을 나타내는 때까지 읽기, 모든 저장된 번호가 요약 될 수있다.

#include <cstdio>

int main()
{
    double num[100]; //存储数字的数组
    while (scanf("%lf", &num[0]) == 1)
    {
        double ans = 0; //结果
        char op = getchar(); //运算符
        if (num[0] == 0 && op == '\n') //只有0
            break;

        int i = 0;
        double temp;
        while (scanf("%c %lf", &op, &temp) == 2)
        {
            if (op == '*')
                num[i] *= temp;
            else if (op == '/')
                num[i] /= temp;
            else if (op == '+')
                num[++i] = temp;
            else
                num[++i] = -temp;

            op = getchar(); //读取空格或者换行符
            if (op == '\n') //换行符则结束
                break;
        }
        while (i >= 0) //所有存储的数字相加
        {
            ans += num[i];
            i--;
        }
        printf("%.2f\n", ans);
    }
    return 0;
}

계속.

 

게시 된 152 개 원래 기사 · 원 찬양 한 · 전망 7593

추천

출처blog.csdn.net/Intelligence1028/article/details/104709958