1. 程式人生 > >HDU 1237 簡單計算器

HDU 1237 簡單計算器

math.h tle 小數 ems target tor getchar style pac

題目代號:HDU 1237

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1237

題目原文:

簡單計算器

Problem Description 讀入一個只包含 +, -, *, / 的非負整數計算表達式,計算該表達式的值。 Input 測試輸入包含若幹測試用例,每個測試用例占一行,每行不超過200個字符,整數和運算符之間用一個空格分隔。沒有非法表達式。當一行中只有0時輸入結束,相應的結果不要輸出。 Output 對每個測試用例輸出1行,即該表達式的值,精確到小數點後2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36 代碼:
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <iostream>
# include <fstream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <math.h>
# include <algorithm>
using namespace std;
# define pi acos(-1.0)
# define mem(a,b) memset(a,b,sizeof(a))
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
# define For(i,n,a) for(int i=n; i>=a; --i)
# define FO(i,a,n) for(int i=a; i<n; ++i)
# define Fo(i,n,a) for(int i=n; i>a ;--i)
typedef long long LL;
typedef unsigned long long ULL;

int main()
{
    double num[205],n;
    char f;
    while(cin>>n)
    {
        mem(num,0);
        int sum=0;
        num[0]=n;
        if(getchar()==‘\n‘&&n==0)break;//cin忽略輸入數據之前空格,但是後面的空格使用getchar忽略,同時可以判斷是否換行結束
        while(1)
        {
            cin>>f>>n;
            if(f==‘*‘)num[sum]*=n;
            else if(f==‘/‘)num[sum]/=n;
            else if(f==‘+‘)num[++sum]=n;
            else num[++sum]=-n;
            if(getchar()==‘\n‘)break;
        }
        n=0;
        for(int i=0;i<=sum;i++)
            n+=num[i];
        printf("%.2lf\n",n);
    }
    return 0;
}

  

HDU 1237 簡單計算器