#include<bits/stdc++.h> using namespace std; enum Token_value { NAME, NUMBER, END, PLUS = '+', MINUS = '-', MUL = '', DIV = '/', PRINT = ';', ASSIGN = '=', LP = '(', RP = ')' }; Token_value get_token(); double error(const string& s); double expr(bool get); double term(bool get); double prim(bool get); Token_value curr_tok = PRINT; double number_value; string string_value; map<string, double> table; int no_of_errors; int main() { table["pi"] = 3.1415926535897932385; table["e"] = 2.7182818284590452354; while (cin) { get_token(); if (curr_tok == END) break;// if (curr_tok == PRINT) continue;// cout << expr(false) << "\n"; } return no_of_errors; } Token_value get_token() { char ch = 0; // cin >> ch; do{ if(!cin.get(ch)) return curr_tok = END; }while (ch!='\n' && isspace(ch)); switch(ch){ case ':': case '\n': return curr_tok = PRINT; }代码的不足与收获
时间: 2024-04-28 19:19:24 浏览: 46
不足:
1. 缺少注释,不易阅读和理解代码的作用。
2. 缺少错误处理机制,如输入错误的字符或语法错误,程序会崩溃或输出错误结果。
3. 缺少函数说明,不知道每个函数的具体作用和参数含义。
4. 缺少代码的可读性和可维护性,例如缺少格式化和代码风格的统一等。
收获:
1. 学习了枚举类型的使用,可以使代码更加简洁和易读。
2. 学习了使用 map 容器存储变量和值的映射关系,方便变量的查找和更新。
3. 学习了递归调用函数的方法,可以使代码更加模块化和易于维护。
4. 学习了对字符的处理,如 isspace 函数可以去除空格和制表符等空白字符。
相关问题
#include <bits/stdc++.h> using namespace std
这段代码是一个C++的头文件引用和命名空间的使用示例。具体来说,`#include <bits/stdc++.h>`是一个常用的头文件引用方式,它包含了C++标准库中的所有头文件。而`using namespace std`则是为了使用`std`命名空间中的标准库函数和对象,这样就可以直接使用`cout`、`cin`等标准输入输出流对象,而不需要写`std::cout`、`std::cin`。
这种写法虽然方便,但也存在一些问题。首先,包含了所有的标准库头文件可能会导致编译时间变长。其次,使用了`using namespace std`会将整个`std`命名空间中的所有标识符引入当前作用域,可能会导致命名冲突。因此,在实际开发中,建议根据需要只包含需要的头文件,并使用具体的命名空间来避免潜在的问题。
#include <bits/stdc++.h> using namespace std;
好的,我明白了。对于您提供的代码片段,有一个问题我可以回答:
问题:为什么使用 "#include <bits/stdc .h>"?
回答:这是一个常见的用法,它实际上包含了一组常用的标准库文件。它是为了方便而设计的,可以让我们在一个地方包含多个常用头文件,而不必为每个头文件单独包含一行。然而,注意这种写法并非标准C++的一部分,所以在一些编译器中可能无法正常工作。
阅读全文