C++高手来答出来200分

来源:百度知道 编辑:UC知道 时间:2024/05/01 17:04:15
用户一个算式,算式允许包括+-*/()和任意个数的十进制数字(整数或者小数),该算式为一次性输入。要求计算出算式的结果或者提示异常算式,并且将正确结果用十进制/五进制两种方式显示出来。其中,五进制数采取以下的格式显示:
(a1 a2a3a4a5a6a7a8a9a10 a11a12a13a14a15a16)
a1为符号位,0代表正数,1代表负数
a2-a10为整数部分,十进制数的整数部分为:
a2*(5^8)+a3*(5^7)+…+a9*(5^1)+a10*(5^0)
a11-a16为小数部分,十进制数N的小数部分应该约等于(尽量精确):
a11*(5^-1)+a12*(5^-2)+…+a16^(5^-6)
例如,十进制数N=-136.56显示为五进制数(1 000001021 240000)

代码要求:
用Visual C++建立Win32工程完成,不使用MFC,并且不得使用任何额外DLL B完成上述代码。输入/输出界面任意。提供源代码。

// EX6_09Extended.CPP
// A program to implement a calculator accepting parentheses

#include <iostream> // For stream input/output
#include <cstdlib> // For the exit() function
#include <cctype> // For the isdigit() function
#include <cstring> // For the strcpy() function
using std::cin;
using std::cout;
using std::endl;

void eatspaces(char* str); // Function to eliminate blanks
double expr(char* str); // Function evaluating an expression
double term(char* str, int& index); // Function analyzing a term
double number(char* str, int& index); // Function to recognize a number
char* extract(char* str, int& index); // Function to extract a substring
const int MAX = 80; // Maximum expression length,
// including '\0