程序最美(寻路)

你还在坚持练习你的技术吗?运动员天天训练,音乐家也会演练更难的曲章。你呢?

上一页 1 ··· 3 4 5 6 7 8 9 下一页

2013年8月13日

去注释程序

摘要: 去注释程序 C/C++中注释有两种形式: 1./* … */ 2.// … 我们要实现的功能就是讲程序中的注释过滤掉。 我们首先采用一种直接的方法进行过滤,就是顺序扫描整个源代码,检测 /*、*/、// 这些标示,以获取程序的注释。// 程序1:顺序扫描#include #include #include #include using namespace std;void read_prog(const string& file, string& prog){ ifstream fin(file.c_str()); if (!fin) { cerr & comm... 阅读全文

posted @ 2013-08-13 14:05 unixfy 阅读(710) 评论(0) 推荐(0) 编辑

2013年8月7日

写一个简单的C词法分析器

摘要: 写一个简单的C词法分析器 在写本文过程中,我参考了《词法分析器的实现》中的一些内容。这里我们主要讨论写一个C语言的词法分析器。一、关键字首先,C语言中关键字有: auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、unsigned、union、void、volatile、while等共32个关键字。 二、运算符 C语言中的运 阅读全文

posted @ 2013-08-07 13:19 unixfy 阅读(15839) 评论(0) 推荐(2) 编辑

2013年8月6日

动态链接库DLL导出函数并导入使用

摘要: 动态链接库DLL导出函数并导入使用 本文完全参考自《vs2008制作dll笔记,回带值样例》。 首先制作DLL文件,在vs2010中新建Win32控制台项目,选择DLL选项,简历头文件,源文件如下: 头文件:// MyDll.hextern "C" _declspec(dllexport) int Max(int a, int b);extern "C" _declspec(dllexport) int Min(int a, int b);extern "C" _declspec(dllexport) bool cim2scada(c 阅读全文

posted @ 2013-08-06 11:16 unixfy 阅读(671) 评论(0) 推荐(0) 编辑

2013年8月3日

检测中缀表达式的合法性

摘要: 检测中缀表达式的合法性 前面我们对《中缀表达式的计算》以及《检测后缀表达式的合法性》进行了讨论,这里我们借助于之前对于两者的讨论,来对中缀表达式的合法性进行检测。如果中缀表达式是合法的,则返回该表达式的值;如果是非法的,则提示其非法。 我们对中缀表达式的合法性检测主要分为两个阶段: 1)中缀表达式转换为后缀表达式过程中是否存在错误; 2)后缀表达式的计算过程中是否存在错误 其中,第2阶段我们在《中缀表达式的计算》中已经做过讨论,这里重点在于第1阶段。 在第1阶段中主要涉及以下几个合法性检测: .操作数是否合法; .左括号和右括号是否匹配; 一、操作数是否合法 合法的操作数首个字符可以是“+”、 阅读全文

posted @ 2013-08-03 00:17 unixfy 阅读(4530) 评论(0) 推荐(2) 编辑

2013年8月2日

输入日期显示星期几

摘要: 输入日期显示星期几 比如今天是2013年8月2日,星期五。我们现在就是要实现这样一个功能,给定一个日期,得到该日期是星期几。 比如:日期星期2013年8月2日星期五20130803星期六2013-08-04星期天2013-6-18星期二2014/1/16星期四2000/8/15星期二 我们需要解决的问题有如下几点: 1.对输入格式进行归一化处理; 2.计算将来或以前某一天是星期几; 一、对输入格式的归一化处理 我们首先实现对输入格式的归一化处理,程序如下:// 输入日期的归一化处理#include #include using namespace std;struct date{ in... 阅读全文

posted @ 2013-08-02 16:25 unixfy 阅读(918) 评论(0) 推荐(0) 编辑

2013年8月1日

!勘误!之前中缀转后缀的一处错误

摘要: !勘误!之前中缀转后缀的一处错误 之前我们在中缀转后缀的处理过程中对于当操作符为”)”的时候,对操作符栈进行弹栈操作,当操作符栈的top()值为”(”,我们将其从操作符栈中进行弹出,但是并没有终止,而是继续弹栈,这是一个严重的错误。比如对于表达式:4 - ( 3 + 2 ) / ( 3 - 1 ) 我们按照之前的做法得到的结果为: 0.5 但是,正确的结果应该为1.5 具体错误出现在: 我们在当if (op_st.top() == “(”) po_st.pop() 后没有结束while循环,从而导致操作符内所有的操作符都弹栈。 具体的修改方法是在op_st.pop()后面添加一个break;语 阅读全文

posted @ 2013-08-01 00:04 unixfy 阅读(268) 评论(0) 推荐(0) 编辑

2013年7月31日

检测后缀表达式的合法性

摘要: 检测后缀表达式的合法性 前面我们介绍了《后缀表达式的计算》,具体做法在于设置一个数据结构:操作数栈,基于操作数栈根据操作符进行弹栈、运算、压栈等操作,最终计算而得后缀表达式的结果。 我们默认处理的后缀表达式都是合法的,对于非法的后缀表达式,我们并没有给出适当的处理。这里我们将在后缀表达式的计算过程中,同时检测后缀表达式是否合法,如果合法则计算到底,最终得到后缀表达式的值;如果非法,则返回该后缀表达式为非法。 比如有后缀表达式: 2 + 3 * 该后缀表达式是非法的,因为+操作符只有一个操作数2; 又如: 1 3 5 * + 7 / - 该后缀表达式的/操作符只有一个操作数7,所以也是非法的; 阅读全文

posted @ 2013-07-31 23:24 unixfy 阅读(2359) 评论(0) 推荐(0) 编辑

2013年7月19日

对表达式进行空白符预处理

摘要: 对表达式进行空白符预处理 前面我们关于中缀表达式、后缀表达式的输入默认是按照操作符和操作数之间是有空白符区分的,所谓的空白符即为空格或者制表符,不包括换行符。// 表达式中操作符和操作数之间默认有空白符void get_infix(vector& inf){ inf.clear(); string line; getline(cin, line); istringstream sin(line); string tmp; while (sin >> tmp) { inf.push_back(tmp); }} 我们这里针对输入表... 阅读全文

posted @ 2013-07-19 12:38 unixfy 阅读(301) 评论(0) 推荐(0) 编辑

字符串替换

摘要: 字符串替换 C++ string 中有自带的replace替换函数,其替换方式有以下几种: (http://www.cplusplus.com/reference/string/string/replace) 这几种方式都是只能针对某一个目标进行替换,不能对字符串中出现多次目标的情形进行全部替换。下面我们给出对字符串中所有目标进行替换的程序。一、两种基本的全部替换方式 比如给定一目标字符串(以下参考自Vimer):12212 我们将其中的“12”替换为“21”,有两种替换方式,分别为: 1)进行distinct替换,即每次替换后,对替换... 阅读全文

posted @ 2013-07-19 12:14 unixfy 阅读(929) 评论(0) 推荐(0) 编辑

2013年7月17日

中缀表达式的计算

摘要: 中缀表达式的计算 前面我们分别讨论了《中缀表达式转换为后缀表达式》以及《后缀表达式的计算》,将二者合并一起即为中缀表达式的计算。即中缀表达式的计算包含两个过程: 1)中缀表达式到后缀表达式的转换 2)后缀表达式的计算 其中,第一个过程是用到了一个栈,该栈存储操作符,即为操作符栈。顺序扫描整个中缀表达式,如果是操作数直接存入后缀表达式中,如果是操作符,则根据其优先级进行入栈出栈操作,具体细节可参见《中缀表达式转换为后缀表达式》。 第二个过程也用到了一个栈,该栈存储操作数,即为操作数栈。其过程是从左到右顺序扫描整个后缀表达式,如果是操作数,则直接入栈,如果是操作符,则对栈中操作数进行弹栈操作,并对 阅读全文

posted @ 2013-07-17 00:33 unixfy 阅读(1841) 评论(0) 推荐(1) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 下一页

导航