搜档网
当前位置:搜档网 › 离散数学计算笛卡尔乘积C++或C语言实验报告

离散数学计算笛卡尔乘积C++或C语言实验报告

离散数学计算笛卡尔乘积C++或C语言实验报告
离散数学计算笛卡尔乘积C++或C语言实验报告

离散数学实验报告

专业班级:12级计算机本部一班姓名:鲍佳珍

学号:201212201401016 实验成绩:

1.【实验题目】

通过编程实现求给定集合A和B的笛卡儿乘积C(C=A×B)的运算。

2.【实验目的】

已知所给集合A和B,求A与B的笛卡儿乘积C(C=A×B)。

假设集合A={1,2,3,4,5},集合B={2,3,8,9,10},

3、实验原理与实现过程

笛卡儿集合:设A,B是两个集合,称集合A×B={|(x∈A)∧(y∈B)}为集合A与B的笛卡儿积。换句话说,笛卡儿乘积是以有序偶为元素组成的集合,它的定义为C={|x∈A∧y∈B}。所以,欲求笛卡儿乘积。只需取尽由集合A

的元素及集合B的元素,并构成序偶

i ,b

i

>送入C之中即可。

算法描述:。

(1)将集合A的元素个数送入N。(2)将集合B的元素个数送入M。(3)1?i。

(4)若i>N,则结束。

(5)1?j。

(6)若j>M,则转(9)。

(7)

i ,b

j

>?C。

(8)j+1?j,转(6)。

(9)i+1?i,转(4)。

4、C或C++语言编程实现

将实验内容与结果按实验报告格式要求填写并上传。

5. 【算法描述】

1.实验原理

真值表:表征逻辑事件输入和输出之间全部可能状态的表格。列出命题公式真假值的表。通常以1表示真,0 表示假。命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法。真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。

2.实验过程

首先是输入一个合理的式子,生成相应真值表,然后用函数运算,输出结果:要求可生成逻辑非、合取、析取、蕴含、双条件表达式的真值表,例如:输入 !a

输出真值表如下:

a !a

0 1

10

输入a&&b

输出真值表如下:

a b a&&b

0 0 0

0 1 0

1 0 0

1 1 1

输入a||b

输出真值表如下:

a b a||b

0 0 0

0 1 1

1 0 1

1 1 1

输入a->b

输出真值表如下:

a b a->b

0 0 1

0 1 1

1 0 0

1 1 1

输入a<>b (其中<>表示双条件)

输出真值表如下:

a b a<>b

0 0 1

0 1 0

1 0 0

1 1 1

6.【源程序(带注释)】

#include

#include

int main()

{

int i,j,m,n,k;

int a[30],b[30];

printf("欢迎使用");

printf("请输入集合A的元素个数:");

scanf("%d",&m);

printf("请输入集合B的元素个数:");

scanf("%d",&n);

cout<

for(i=0;i

{

printf("请输入集合A的第%d个数:",i+1);

scanf("%d",&a[i]);

} //输入集合A的元素

cout<

for(j=0;j

{

printf("请输入集合B的第%d个数:",j+1); //输入集合B的元素

scanf("%d",&b[j]);

}

k=0;

printf("c={");

for(i=0;i

for(j=0;j

printf("<%d,%d>",a[i],b[j]);

k++;

}

} //输出最后结果

printf("}\n");

return 0;

}

7.【实验结果与分析总结(含运行结果截图)】

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

离散数学实验报告

《离散数学》实验报告专业网络工程 班级 姓名 学号 授课教师 二 O 一六年十二月

目录 实验一联结词的运算 实验二根据矩阵的乘法求复合关系 实验三利用warshall算法求关系的传递闭包实验四图的可达矩阵实现

实验一联结词的运算 一.实验目的 通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习与锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解与记忆命题连接词运算。 二.实验原理 (1) 非运算, 符号:? ,当P=T时 ,?P为F, 当P=F时 ,?P为T 。 (2) 合取, 符号: ∧ , 当且仅当P与Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。 (3) 析取, 符号: ∨ , 当且仅当P与Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。 (4) 异或, 符号: ▽ , 当且仅当P与Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。 (5) 蕴涵, 符号: →, 当且仅当P为T,Q为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。 (6) 等价, 符号: ? , 当且仅当P,Q的真值不同时,命题P?Q的真值才为假;否 则,P→Q的真值为真。 三.实验内容 编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。四.算法程序 #include void main() { printf("请输入P、Q的真值\n"); int a,b; scanf("%d%d",&a,&b); int c,d; if(a==1) c=0; else c=1; if(b==1) d=0; else d=1; printf("非P、Q的结果为%d,%d\n",c,d);

离散数学上机实验1

实验1 1实验内容 (1)求任意一个命题公式的真值表。 (2)利用真值表求任意一个命题公式的主范式。 (3)利用真值表进行逻辑推理。 注:(2)和(3)可在(1)的基础上完成。 2实验目的 真值表是命题逻辑中的一个十分重要的概念,利用它几乎可以解决命题逻辑中的所有问题。例如,利用命题公式的真值表,可以判断命题公式的类型、求命题公式的主范式、判断两命题公式是否等价,还可以进行推理等。 本实验通过编写一个程序,让计算机给出命题公式的真值表,并在此基础上进行命题公式类型的判定、求命题公式的主范式等。目的是让学生更加深刻地理解真值表的概念,并掌握真值表的求解方法及其在解决命题逻辑中其他问题中的应用。 3算法的主要思想 利用计算机求命题公式真值表的关键是:①给出命题变元的每一组赋值;②计算命题公式在每一组赋值下的真值。 真值表中命题变元的取值具有如下规律:每列中0 和1 是交替出现的,且0 和1 连续出现的个数相同。n 个命题变元的每组赋值的生成算法可基于这种思想。 含有n个命题变元的命题公式的真值的计算采用的方法为“算符优先法”。 为了程序实现的方便,约定命题变元只用一个字母表示,非、合取、析取、蕴含和等价联结词分别用!、&、|、-、+来表示。 算符之间的优先关系如表1-1所示: 表1-1算符优先级

优先算法,我们采用两个工作栈。一个称作OPTR,用以寄存运算符;另一个称作OPND,用以寄存操作数或运算结果。算法的基本思想是: (1)首先设置操作数栈为空栈,符号“@”为运算符的栈底元素; (2)调用函数Divi(exp,myopnd)得到命题公式包含的命题变元序列myopnd (按字典序排列,同一个命题变元只出现一次); (3)依次读入命题公式中的每个字符,若是命题变元则其对应的赋值进OPND 栈,若是运算符,则和OPTR栈的栈顶运算符比较后作相应操作,直至整个命题公式求值完毕。

离散数学实验报告

离散数学实验报告(实验ABC) 专业班级 学生姓名 学生学号 指导老师 完成时间

目录 第一章实验概述..................................... 错误!未定义书签。 实验目的....................................... 错误!未定义书签。 实验内容....................................... 错误!未定义书签。 实验环境....................................... 错误!未定义书签。第二章实验原理和实现过程........................... 错误!未定义书签。 实验原理....................................... 错误!未定义书签。 建立图的邻接矩阵,判断图是否连通 ............ 错误!未定义书签。 计算任意两个结点间的距离 ................... 错误!未定义书签。 对不连通的图输出其各个连通支 ................ 错误!未定义书签。 实验过程(算法描述)........................... 错误!未定义书签。 程序整体思路 ............................... 错误!未定义书签。 具体算法流程 ................................ 错误!未定义书签。第三章实验数据及结果分析........................... 错误!未定义书签。 建立图的邻接矩阵并判断图是否连通的功能测试及结果分析错误!未定义书签。 输入无向图的边 .............................. 错误!未定义书签。 建立图的连接矩阵 ............................ 错误!未定义书签。 其他功能的功能测试和结果分析................... 错误!未定义书签。 计算节点间的距离 ............................ 错误!未定义书签。 判断图的连通性 .............................. 错误!未定义书签。 输出图的连通支 .............................. 错误!未定义书签。 退出系统 .................................... 错误!未定义书签。第四章实验收获和心得体会........................... 错误!未定义书签。

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

离散数学实验报告--四个实验!!!

《离散数学》 课程设计 学院计算机学院 学生姓名 学号 指导教师 评阅意见 提交日期 2011 年 11 月 25 日

引言 《离散数学》是现代数学的一个重要分支,也是计算机科学与技术,电子信息技术,生物技术等的核心基础课程。它是研究离散量(如整数、有理数、有限字母表等)的数学结构、性质及关系的学问。它一方面充分地描述了计算机科学离散性的特点,为学生进一步学习算法与数据结构、程序设计语言、操作系统、编译原理、电路设计、软件工程与方法学、数据库与信息检索系统、人工智能、网络、计算机图形学等专业课打好数学基础;另一方面,通过学习离散数学课程,学生在获得离散问题建模、离散数学理论、计算机求解方法和技术知识的同时,还可以培养和提高抽象思维能力和严密的逻辑推理能力,为今后爱念族皮及用计算机处理大量的日常事务和科研项目、从事计算机科学和应用打下坚实基础。特别是对于那些从事计算机科学与理论研究的高层次计算机人员来说,离散数学更是必不可少的基础理论工具。 实验一、编程判断一个二元关系的性质(是否具有自反性、反自反性、对称性、反对称性和传递性) 一、前言引语:二元关系是离散数学中重要的内容。因为事物之间总是可以 根据需要确定相应的关系。从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。 二、数学原理:自反、对称、传递关系 设A和B都是已知的集合,R是A到B的一个确定的二元关系,那么集合R 就是A×B的一个合于R={(x,y)∈A×B|xRy}的子集合 设R是集合A上的二元关系: 自反关系:对任意的x∈A,都满足∈R,则称R是自反的,或称R具有自反性,即R在A上是自反的?(?x)((x∈A)→(∈R))=1 对称关系:对任意的x,y∈A,如果∈R,那么∈R,则称关系R是对称的,或称R具有对称性,即R在A上是对称的? (?x)(?y)((x∈A)∧(y∈A)∧(∈R)→(∈R))=1 传递关系:对任意的x,y,z∈A,如果∈R且∈R,那么∈R,则称关系R是传递的,或称R具有传递性,即R在A上是传递的? (?x)(?y)(?z)[(x∈A)∧(y∈A)∧(z∈A)∧((∈R)∧(∈R)→(∈R))]=1 三、实验原理:通过二元关系与关系矩阵的联系,可以引入N维数组,以数 组的运算来实现二元关系的判断。 图示:

离散数学上机实验报告

离散数学上机实验报告

————————————————————————————————作者:————————————————————————————————日期: ?

《离散数学》 实验报告 姓名: 学号: 班级: ? 实验一连结词逻辑运算 一.实验目的 实现二元合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。

二.实验内容 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的真值。要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。 三.实验环境 使用Microsoft Visual C++6.0为编程软件,采用称C/C++语言为编程语言实现。 四.实验过程 1.算法分析: 合取:p,q都为1的时候为1,其他为0 析取:p,q都为0的时候为0,其他为1 蕴含:p为1,q为0时为0,其他为1 等价:p,q同真同假 2.程序代码: #include intmain() { ?int P,Q,a,b,c,d,p,q; printf(" P的值"); for(P=0;P<2;P++) ?{ ?for(Q=0;Q<2;Q++) ??printf("\t%d",P); ?} printf("\n Q的值"); for(P=0;P<2;P++) ?{ ??for(Q=0;Q<2;Q++) ?printf("\t%d",Q); ?} printf("\n 非P的值"); for(P=0;P<2;P++) { ?for(Q=0;Q<2;Q++) ?{ ??if(P==0)/*判断非P的值*/ ???p=1; ??else ??p=0; ???printf("\t%d",p); ?} ?}

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

离散数学实验报告()

《离散数学》实验报告 专业网络工程 班级 姓名 学号 授课教师 二 O 一六年十二月

目录 实验一联结词的运算 实验二根据矩阵的乘法求复合关系 实验三利用warshall算法求关系的传递闭包实验四图的可达矩阵实现

实验一联结词的运算 一.实验目的 通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习和锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解和记忆命题连接词运算。二.实验原理 (1) 非运算, 符号: ,当P=T时,P为F, 当P=F时,P为T 。 (2) 合取, 符号: ∧ , 当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。 (3) 析取, 符号: ∨ , 当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。 (4) 异或, 符号: ▽ , 当且仅当P和Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。 (5) 蕴涵, 符号: →, 当且仅当P为T,Q为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。 (6) 等价, 符号: ?, 当且仅当P,Q的真值不同时,命题P?Q的真值才为假;否则,P→Q的真值为真。 三.实验内容 编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。四.算法程序 #include void main() { printf("请输入P、Q的真值\n"); int a,b; scanf("%d%d",&a,&b); int c,d; if(a==1) c=0; else c=1; if(b==1) d=0;

离散数学上机实验报告

离 散 数 学 实 验 报 告 姓名: 学号: 班级:

离散数学实验报告 实验一真值计算 实验内容: 从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。用C语言实现。 实验源程序和运行结果如下: #include "" void main() { char p,q,t; int p1,q1; cout<<"输入p,q的真值(F或T)"<>p>>q; if(p=='F') p1=0; else p1=1; if(q=='F') q1=0; else q1=1;

.\n选择2计算对称闭包...\n选择3用R+计算传递闭包...\n选择4用washall 计算传递闭包...\n计算结束后选择0退出\n"); scanf("%d",&t); switch(t) { case 1: { for(i=0;i

for(i=0;i

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

离散数学实验报告

大连民族学院 计算机科学与工程学院实验报告 实验题目:判断关系的性质 课程名称:离散数学 实验类型:□演示性□验证性□操作性□设计性□综合性 专业:班级:学生姓名:学号: 实验日期:年月日实验地点: 实验学时:实验成绩: 指导教师签字:年月日 实验报告正文部分(具体要求详见实验报告格式要求) 实验报告格式 [实验题目] 判断关系的性质 [实验目的] 使学生掌握利用计算机语言实现判断关系性质的基本方法。[实验环境] Microsoft Visual C++6.0 [实验原理] 实验内容与要求:对给定表示有穷集上关系的矩阵,确定这个关系是否是自反的或反自反的;对称的或反对称的;是否传递的。 通过二元关系与关系矩阵的联系,可以引入N维数组,以数组的运算来实现二元关系的判断。

图示: 程序源代码: #include #define N 4 main() { int i,j,k; int f,e,z; int M[N][N]; printf("判断R是否为自反关系、对称关系、是否可传递?\n"); printf("请输入一个4*4的矩阵。\n"); for(i=0;i

scanf("%d",&M[i][j]); for(i=0;i

离散数学实验报告

离散数学实验报告 姓名: 学号: 班级: 实验地点: 实验时间:

1 实验目的和要求 运用最小生成树思想和求最小生成树程序解决实际问题。实际问题描述如下: 八口海上油井相互间距离如下表,其中1号井离海岸最近,为5km 。问从海岸经1号井铺设油管把各井连接起来,怎样连油管长度最短(为便于检修,油管只准在油井处分叉)? 2 实验环境和工具 实验环境:Windows 7 旗舰版 工具:Dev-C++ 5.8.3 3 实验过程 3.1 算法流程图

3.2程序核心代码 //油管铺设问题Prim算法实现 #include #include using namespace std; #define MAXV 10 #define INF 32767 //INF表示∞ typedef int InfoType; typedef struct{ int no; //顶点编号 InfoType info; //顶点其他信息 } VertexType; //顶点类型 typedef struct{ //图的定义 float edges[MAXV][MAXV]; //邻接矩阵 int vexnum; //顶点数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; //图的邻接矩阵类型

/*输出邻接矩阵g*/ void DispMat(MGraph g){ int i,j; for (i=0;i

实验报告 编写一个简易实用的计算器。

开课实验室:现代信息交流中心40*开课时间:2012年**月**日实验报告:年月日 一、实验目的:熟悉Java图形用户界面的开发原理与技术,包括各种组件和容器技术。 二、实验内容: 编写一个简易实用的计算器。 三、源代码清单: package exp3; import Result extends Panel { TextField tf; Result() { tf = new TextField("0", 25); add(tf); } } class Key extends Panel { Button backSpace, clearEnter, cancel,lBracket,rBracket; Button one, two, three, four, five, six, seven, eight, nine, zero; Button add, subtract, multiplay, divide; Button sqrt, reciprocal, mod; Button positiveAndNegative, point, equal; Key() { setLayout(new GridLayout(5, 5)); backSpace = new Button("←"); (new Color(255, 0, 0)); add(backSpace); clearEnter = new Button("CE"); (new Color(255, 0, 0)); add(clearEnter); cancel = new Button("C"); (new Color(255, 0, 0));

离散数学实验报告格式

《离散数学》实验报告 专业 班级 姓名 学号 授课教师 二 O 一六年十二月

目录 实验一联结词的运算 实验二根据矩阵的乘法求复合关系实验三利用算法求关系的传递闭包实验四图的可达矩阵实现

实验一联结词的运算 一.实验目的 通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习和锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解和记忆命题连接词运算。二.实验原理 (1) 非运算, 符号: ,当时,P为F, 当时,P为T 。 (2) 合取, 符号: ∧ , 当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。 (3) 析取, 符号: ∨ , 当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。 (4) 异或, 符号: ▽ , 当且仅当P和Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。 (5) 蕴涵, 符号: → , 当且仅当P为为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。 (6) 等价, 符号: ?, 当且仅当的真值不同时,命题P?Q的真值才为假;否则,P→Q 的真值为真。 三.实验内容 编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。四.算法程序 <> () { ; ("请选择运算方式\n"); ("1.析取\n"); ("2.合取\n"); ("3.非\n"); ("4.蕴含\n"); ("5.等价\n");

m; (""); ( m>=1 m<=4 ) { ("请输入P Q的值\n"); (" " ); = 1; (m) { 1( ( >= 1)( < 4 ) ) { (0 0) ("P 析取Q = 0\n"); ("P 析取Q = 1\n"); ; (4) ; ("请输入P Q的值\n"); (" " ); } ; 2( ( >= 0)( < 4 ) ) { (1 1) ("P 合取Q = 1\n"); ("P 合取Q = 0\n"); ; (4) ; ("请输入P Q的值\n"); (" " ); } ; 3( ( >= 0)( < 4 ) ) { (0) ("非Q = 1\n"); ("非Q = 0\n");

离散数学关系性质的C++或C语言判断实验报告

1.【实验目的】 对称: 通过算法设计并编程实现对给定集合上的关系是否为对称关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法 自反: 通过算法设计并编程实现对给定集合上的关系是否为自反关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法。 2.【实验内容】 已知关系R 由关系矩阵M 给出,要求判断由M 表示的这个关系是否为对称关 系。假定R 的关系矩阵为:?????? ? ??=1234210330124321M 3.【实验要求】 C 语言编程实现 4.【算法描述】 对称: 从给定的关系矩阵来判断关系R 是否为对称是很容易的。若M (R 的关系矩阵)为对称矩阵,则R 是对称关系;若M 为反对称矩阵,则R 是反对称关系。因为R 为对称的是等价关系的必要条件,所以,本算法可以作为判等价关系算法的子程序给出。 算法实现: (1) 输入关系矩阵M (M 为n 阶方阵); (2) 判断对称性,对于i=2,3,….,n ;j=1,2,……,i-1,若存在m ij =m ji , 则R 是对称的; (3) 判断反对称性; (4) 判断既是对称的又是反对称的; (5) 判断既不是对称的又不是反对称的; (6) 输出判断结果。

自反: 从给定的关系矩阵来断判关系R是否为自反是很容易的。若M(R的关系矩阵)的主对角线元素均为1,则R是自反关系;若M(R的关系矩阵)的主对角线元素均为0,则R是反自反关系;若M(R的关系矩阵)的主对角线元素既有1又有0,则R既不是自反关系也不是反自反关系。本算法可以作为判等价关系算法的子程序给出。 算法实现 (1)输入关系矩阵M(M为n阶方阵)。 (2)判断自反性,对于i=1,2,….,n;若存在m =0,则R不是自反 ii =1,则R是自反的;否则R既不是自反关系也不是的;若存在m ii 反自反关系。 (3)输出判断结果。 源代码 #include void z(); void r(); void main() { int d; while(d) { printf("欢迎使用关系性质的判断系统\n\n 1. 对称关系的判断 2. 自反关系的判断\n\n请输入选项:"); scanf("%d",&d); switch(d){ case 1: r();break; case 2: z();break; case 0: break; }

离散数学计算机实验报告

离散实验报告 实验一真值计算 1、实验目的 熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。 2、实验内容与要求 定义1 设P表示一个命题,由命题联结词┐和命题P连接成┐P,称┐P为P的否定式复合命题,┐P读“非P”。称┐为否定联结词。┐P是真,当且仅当P为假;┐P是假,当且仅当P为真。 定义2 设P和Q为两个命题,由命题联结词∧将P和Q连接成P∧Q,称P∧Q为命题P和Q的合取式复合命题,P∧Q读做“P与Q”,或“P且Q”。称∧为合取联结词。当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。 定义3 设P和Q为两个命题,由命题联结词∨把P和Q连接成P∨Q,称P∨Q为命题P和Q的析取式复合命题,P∨Q读做“P或Q”。称∨为析取联结词。当且仅当P和Q的真值同为假,P∨Q的真值为假;否则,P∨Q的真值为真。 定义4 设P和Q为两个命题,由命题联结词→把P和Q连接成P→Q,称P→Q为命题P和Q的条件式复合命题,简称条件命题。P→Q读做“P条件Q”或者“若P则Q”。称→为条件联结词。当P的真值为真而Q的真值为假时,命题P→Q的真值为假;否则,P→Q 的真值为真。 定义5 令P、Q是两个命题,由命题联结词?把P和Q连接成P ? Q,称P ? Q为命题P和Q的双条件式复合命题,简称双条件命题,P ?Q读做“P当且仅当Q”,或“P等价Q”。称?为双条件联结词。当P和Q的真值相同时,P ? Q的真值为真;否则,P ? Q 的真值为假。 本实验要求从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。用C语言或MATLAB实现。 3、实验报告要求 列出实验目的、实验内容、实验步骤、源程序和实验结果。 源代码: #include void main()

简单的计算器实验报告

HUNAN UNIVERSITY 程序设计训练 ——简单的计算器 报告 学生姓名田博鑫 学生学号 20110407110 专业班级工业工程(1)班 指导老师吴蓉晖 2012年6月16日至2012年7月10日

1.程序设计目的和要求 目的: 此次程序设计的目的主要是为了我们能更好的理解和熟悉C语言这门计算机课程,自己有对计算机程序设计的的初步认识。 要求: 运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时利用键盘或鼠标进行相应操作。程序基本功能要求实现完整,并有简单的验证。在计算器运行中,输入数据时如果输入错误的情况,能够通过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行调整。 2.程序设计的任务和内容 这个简单的计算器要求能够进行简单的四则运算,要求运用所学的知识和查阅相关的资料来完成这个简单的计算器的设计,要求这个简单的计算器尽量在windows界面下进行,计算器界面不做要求。该简单的计算器包含有基本的四则运算、正弦函数、余弦函数、正切函数、余切函数、平方、开方,以及平均值、标准差、方差的运算。 3.程序设计说明 该简单的计算器能进行基本的四则运算和乘方,开方,以及三角函数的运算。操作需要逐步根据提示来完成所要进行的运算。比如要进行81的开方运算的话首先在屏幕上可以看到开放运算的命令是5,所以先要输入5,然后再输入要开方的数据81可以在屏幕上看到运行的结果。 4.详细设计说明包含流程图

5.程序的调试及结果 调试与运行(没有错误)

离散数学实验报告

《离散数学》 实验报告 题目 专业 学号 姓名 指导教师 提交日期

实验一五种连结词的逻辑运算 一.实验目的 用C语言实现两个命题变元的合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。 二.实验内容 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的的真值。要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。 三. 实验过程 1. 算法分析: 编程语言为c语言 合取/\:p,q都为1的时候为1,其他为0 析取\/:p,q都为0的时候为0,其他为1 蕴含->:p为1,q为0时为0,其他为1 等价<->:p,q同真同假 流程图

2. 程序代码: #include int main() { int p,q,i,t; printf("************************************************\n"); printf("*** ***\n"); printf(" 欢迎进入逻辑运算软件\n"); printf("*** ***\n"); printf("************************************************\n"); do{ printf("请输入p的值(0或1)"); scanf("%d",&p); if(p!=0&&p!=1) printf("输入有误"); }while(p!=0&&p!=1);

do{ printf("请输入q的值(0或1)"); scanf("%d",&q); if(q!=0&&q!=1) printf("输入有误"); }while(q!=0&&q!=1); do{ printf("请选择要进行的操作\n"); printf("1:合取\n2:析取\n3:蕴含\n4:等价\n"); scanf("%d",&i); switch(i){ case 1:{ if(p&&q) printf("合取运算:p/\q=1\n"); else printf("合取运算:p/\q=0\n"); break; } case 2:{ if(p||q) printf("析取运算:p\/q=1\n"); else printf("析取运算:p\/q=0\n"); break; } case 3:{ if(p&&!q) printf("蕴含:p->q=0\n"); else printf("蕴含:p->q=1\n"); break;} case 4:{ if((p&&q)||(!p&&!q)) printf("等价运算:p<->q=1\n"); else printf("等价运算:p<->q=0\n"); break; } }printf("是否继续运算1\\0\n"); scanf("%d",&t); }while(t); return 0; }

离散数学上机实验报告

离散数学实验报告姓名: 学号: 专业:

实验一、真值运算 一、实验内容 从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值,并输出。 二、实验步骤 编写程序,将P,Q以不同真值带入,观察程序运行结果,调式程序。 三、实验代码 #include int main() { int p,q; char t; while(t) { printf("是否运算程序(y/n):\n"); scanf("%c",&t); if('y'==t) { printf("输入p,q的真值(0或1):"); scanf("%d%d",&p,&q); if((p!=1)&&(p!=0)) { printf("请重新输入p值");

scanf("%d",&q); } if((q!=1)&&(q!=0)) { printf("请重新输入q值"); scanf("%d",&q); } if(q==0&&p==0) { printf("﹁p=1\n"); printf("﹁q=1\n"); printf("p∧q=0\n"); printf("p∨q=0\n"); printf("p→q=1\n"); printf("p<->q=1\n"); } else if(p==0&&q==1) { printf("﹁p=1\n"); printf("﹁q=0\n"); printf("p∧q=0\n"); printf("p∨q=1\n"); printf("p→q=1\n");

printf("p<->q=0\n"); } else if(p==1&&q==0) { printf("﹁p=0\n"); printf("﹁q=1\n"); printf("p∧q=0\n"); printf("p∨q=1\n"); printf("p→q=0\n"); printf("p<->q=0\n"); } else if(p==1&&q==1) { printf("﹁p=0\n"); printf("﹁q=0\n"); printf("p∧q=1\n"); printf("p∨q=1\n"); printf("p→q=1\n"); printf("p<->q=1\n"); } continue; } if('n'==t)

相关主题