C或C++文件系统或计算器编程

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:46:37
文件系统要求:①统一管理文件存储空间(即外存),实施存储空间的分配与回收。
②确定文件信息的存放位置及存放形式。 ③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。 ④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)
计算器要求:实现基本表达式计算的功能
输入:数学表达式,表达式由整数和“+”、 “-”、“×”、“/”、“(”、“)”组成
输出:表达式的值
基本操作:键入表达式,开始计算,计算过程和结果记录在文档中
关键知识点:栈,二查树
PS:二者之一即可,如果可用,我给100,说到做到,急用,请各位大虾帮帮忙,谢谢。
带括号运算和连续运算有错啊,能帮我改改不~~~

用二叉树实现的完成数学表达式的计算你看行不
#include <iostream>
using namespace std;
#include <cstring>
#include <string>
#include <sstream>

struct Node{
double val;//maybe data or operator
Node* L;
Node* R;
Node(double v):val(v),L(NULL),R(NULL){}
};
void input(char buf[], int len);
double cal(char buf[], int len);
Node* makeTree(char buf[], int len);
double calTree(Node* t);
void releaseTree(Node* t);
char* findLowestOp(char buf[], int len);
char* skipData(char* p);
int level(char op);

int main()
{
char buf[100];
input(buf, 100);
cout << "result=" << cal(buf, strlen(buf)) << endl;
system("pause");
}
void input(char buf[], int len)
{
cout << "input you expression:";
cin >> buf;
}
double cal(char buf[], int len)
{
Node* t = makeTree(