命题公式合法性的判定.docxVIP

  • 6
  • 0
  • 约6.38千字
  • 约 22页
  • 2019-10-09 发布于湖北
  • 举报
PAGE I 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:数据结构课程设计 课程设计题目:命题公式合法性的判定 院(系): 专 业: 班 级: 学 号: 姓 名: 指导教师: 沈阳航空航天大学课程设计报告 PAGE 15 目 录 TOC \o 1-3 \h \z \u 沈阳航空航天大学 I 1 课程设计介绍 1 1.1 课程设计内容 1 1.2题目要求: 1 2课程设计原理 2 2.1课设题目粗略分析 2 2.2原理图介绍 2 2.2.1功能模块图 2 2.2.2流程图分析 3 3数据结构分析 12 3.1存储结构 12 3.2算法描述 12 4调试与分析 13 4.1调试过程 13 4.2运行结果 14 参考文献 15 附 录(关键部分程序清单) 16 沈阳航空航天大学课程设计报告 1 课程设计介绍 1.1 课程设计内容 题目内容: 设命题变元为单个大写字母,交、并、非、条件、双条件连接词分别用+、*、—、?、=五个字符表示,由屏幕输入一个命题公式串,判断其是否是命题公式。 1.2题目要求: 1. 利用所学知识,设计相应的数据结构; 2. 熟练运用开发环境; 3 .完成软件的设计与编码; 4. 熟练掌握基本的调试方法; 5 提交符合课程设计规范的报告。 2课程设计原理 2.1课设题目粗略分析 根据课设题目要求,拟将整体程序分为七大模块。以下是七个模块的大体分析: main():主函数模块 Judgek1():检测括号是否本身单独成对出现 Judgek2():检测括号本身是否匹配 Judgek3():左括号与运算符和命题变元是否同时出现 Judgek4():右括号与运算符或命题变元是否同时出现 Judgef():非运算与右括号或其他运算符号是否同时出现 Judgey():其他运算与右括号或其他运算符号同时出现 Judgel ( ) :命题变元与左括号或非运算或命题变元同时出现 Reset ( ) : 初始化数组的函数 2.2原理图介绍 2.2.1功能模块图 2.2.2流程图分析 main(主函数) 功能:连接各个函数,确定他们的执行顺序和条件。 Judgek1() 功能:检测括号是否本身单独成对出现 Judgek2( ) 功能: 检测括号本身是否匹配 Judgek3( ); 功能: 左括号与运算符和命题变元是否同时出现 Judgek4( ) 功能: 右括号与运算符或命题变元是否同时出现 Judgef( ) 功能:非运算与右括号或其他运算符号是否同时出现 Judgey( ) 功能:其他运算与右括号或其他运算符号同时出现 Judgel( ) 功能:命题变元与左括号或非运算或命题变元同时出现 reset( ) 功能:初始化数组的函数 3数据结构分析 3.1存储结构 定义一个数组str和一个指向该数组的指针ch_point如下: char str[150]={\0}; char *ch_point=str; 3.2算法描述 检测括号是否本身单独成对出现: 在一个字符串中如果括号本身单独出现而括号中没有任何东西出现(如A*( )B)则必不是命题公式,具体算法如下: while(*ch!=\0) { if(*ch==(*(ch++)==)) { printf(该字符串不是合法命题,括号不匹配); exit(0); } ch++; }} 检测括号本身是否匹配: 在一个字符串中括号必须是成对按一定规律出现,不可能先出现右括号再出现左括号,否则不是命题公式,具体算法如下: while(*ch!=\0) { if(*ch==(){ n++; } if(*ch==)) { n--;} ch++; if(n0) { printf(该字符串不是合法命题,括号不匹配);exit(0);}} if(n!=0) { printf(该字符串不是合法命题,括号不匹配); exit(0); }} 3. 左括号与运算符和命题变元是否同时出现 此算法与以下五个算法类似,及每个字符均有多个字符不能与之相邻,否者不是命题公式: while(*ch!=\0) { ch2=ch+1;if(

文档评论(0)

1亿VIP精品文档

相关文档