计算程序及说明

计算程序及说明
计算程序及说明

计算程序及说明

1、参数Kc的计算

Private Sub Command4_Click() ’Kc的计算

Dim i As Integer '天数控制变量

Dim P(1 To 2200) As Single '流域的平均降雨量

Dim P1(1 To 2200) As Single, P2(1 To 2200) As Single, P3(1 To 2200) As Single, P4(1 To 2200) As Single '流域各地区降雨量

Dim E0(1 To 2200) As Single '流域的水面蒸发

Dim Ep(1 To 367) As Single '流域的蒸发能力

Dim e(1 To 367) As Single '流域总的蒸发量

Dim EU(1 To 367) As Single, EL(1 To 366) As Single, ED(1 To 367) As Single '三层蒸发模式参数Dim Q(1 To 2200) As Single '流域实测径流

Dim R(1 To 367) As Single '流域计算径流

Dim RS(1 To 367) As Single, RG(1 To 367) As Single '地表及地下径流

Dim PE(1 To 367) As Single

Dim W(1 To 367) As Single '流域总的蓄水量

Dim WU(1 To 367) As Single, WL(1 To 367) As Single, WD(1 To 367) As Single '上下深层土壤含水量

Dim WMM As Single '流域蓄水容量最大值

Dim sumQ(1 To 4), sumR(1 To 4) As Single '某一年的总实测径流,总计算径流

Dim a(1 To 367) As Single

Dim XD(1 To 4000, 1 To 4), minXDH, JD(1 To 4000, 1 To 4) As Single '相对误差,最小相对误差,绝对误差

Dim qo(1 To 2200), E0o(1 To 2200), P1o(1 To 2200), P2o(1 To 2200), P3o(1 To 2200), P4o(1 To 2200) As Single '流域实测逐日径流,蒸发量及四个雨量站实测降雨

Dim k, mink As Single '循环控制变量,Kc=k/1000,最小的k

Dim kaishi, tianshu, m As Single

Dim sumQo, sumRo, sumP, verQ As Double '总实测径流,总计算径流,总降雨量,平均径流Const h1 = 0.3, h2 = 0.17, h3 = 0.31, h4 = 0.22 '各雨量站的权重

Const Wm = 140, WUM = 30, WLM = 60, WDM = 50, B = 0.3, C = 0.17, IM = 0.002, Fc = 22 '模型参数

Open "C:\Users\Administrator\Desktop\水文预报课程设计总\89-90数据新.txt" For Input As #1 '打开文件

For i = 1 To 730

Input #1, qo(i), E0o(i), P1o(i), P2o(i), P3o(i), P4o(i)

Next i

Close #1

minXD1 = 0.002 '第一年相对误差比较值

minXD2 = 0.002 '第二年相对误差比较值

For k = 900 To 1900 'Kc=k/1000

XD(k, 1) = 0

XD(k, 2) = 0

For m = 1 To 2

If m = 1 Then '读取89年数据

kaishi = 1

tianshu = 365

ElseIf m = 2 Then '读取90年数据

kaishi = 366

tianshu = 365

End If

sumQo = 0

sumRo = 0

sumP = 0

For j = 1 To tianshu '使带入循环的各年降雨和蒸发量对应

Q(j) = qo(kaishi + j - 1)

E0(j) = E0o(kaishi + j - 1)

P1(j) = P1o(kaishi + j - 1)

P2(j) = P2o(kaishi + j - 1)

P3(j) = P3o(kaishi + j - 1)

P4(j) = P4o(kaishi + j - 1)

P(j) = h1 * P1(j) + h2 * P2(j) + h3 * P3(j) + h4 * P4(j) '流域平均降雨量计算

sumQo = sumQo + Q(j)

sumP = sumP + P(j)

Next j

verQ = sumQo / tianshu

'流域三层蒸发计算

W(1) = 120

WU(1) = 10

WL(1) = 60

WD(1) = 50

W(1) = WU(1) + WL(1) + WD(1)

For i = 1 To tianshu

Ep(i) = E0(i) * k / 1000

If WU(i) + P(i) >= Ep(i) Then

EU(i) = Ep(i)

EL(i) = 0

ED(i) = 0

End If

If WU(i) + P(i) < Ep(i) Then

If WL(i) >= C * WLM Then

EU(i) = WU(i) + P(i)

EL(i) = (Ep(i) - EU(i)) * WL(i) / WLM

ED(i) = 0

ElseIf WL(i) < C * WLM And WL(i) >= C * (Ep(i) - EU(i)) Then

EU(i) = WU(i) + P(i)

EL(i) = (Ep(i) - EU(i)) * C

ED(i) = 0

ElseIf WL(i) < C * (Ep(i) - EU(i)) Then

EU(i) = WU(i) + P(i)

EL(i) = WL(i)

ED(i) = (Ep(i) - EU(i)) * C - EL(i)

End If

End If

e(i) = EU(i) + EL(i) + ED(i)

W(i) = WU(i) + WL(i) + WD(i)

'流域产流计算

WMM = Wm * (1 + B)

a(i) = WMM * (1 - (1 - (W(i) / Wm)) ^ (1 / (1 + B)))

PE(i) = P(i) - e(i)

'产流时

If PE(i) > 0 Then

If PE(i) + a(i) < WMM Then

R(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1)

W(i + 1) = W(i) + PE(i) - R(i)

Else

R(i) = PE(i) + W(i) - Wm

W(i + 1) = Wm

End If

End If

'不产流时

If PE(i) <= 0 Then

R(i) = 0

W(i + 1) = W(i) + PE(i)

End If

sumRo = sumRo + R(i)

If WU(i) + P(i) - EU(i) - R(i) <= WUM Then '求下一时刻地下各层含水量

WU(i + 1) = WU(i) + P(i) - EU(i) - R(i)

WL(i + 1) = WL(i) - EL(i)

WD(i + 1) = WD(i) - ED(i)

ElseIf WU(i) + P(i) - EU(i) - R(i) > WUM Then

WU(i + 1) = WUM

If WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) <= WLM Then

WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM)

WD(i + 1) = WD(i) - ED(i)

ElseIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) > WLM Then

WL(i + 1) = WLM

If WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM <= WDM Then

WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM

Else

WD(i + 1) = WDM

End If

End If

End If

Next i

sumRo = sumRo * 653000 * (1 - IM) / 24 / 3600 '将sumRo 的单位由(mm)转化为(m3/s)

sumRo = sumRo + 653000 * IM * sumP / 24 / 3600 '计算的径流总量等于透水面积上的产流加上不透水面积上的直接产流

JD(k, m) = sumQo - sumRo '求解绝对误差

XD(k, m) = JD(k, m) / sumQo '求解相对误差

sumQ(m) = sumQo

sumR(m) = sumRo

Next m

If minXD1 > Abs(XD(k, 1)) Then '判断相对误差是否小于5%

minXD1 = Abs(XD(k, 1))

End If

If minXD2 > Abs(XD(k, 2)) Then

minXD2 = Abs(XD(k, 2))

End If

If minXD1 < minXD2 Then

minXDH = Abs(XD(k, 1))

Else: minXDH = Abs(XD(k, 2))

mink = k

Text1.Text = Round(sumQ(1), 5) '第一年实测径流量Q

Text2.Text = Round(sumR(1), 5) '第一年计算径流量R

Text3.Text = Round(JD(k, 1), 5) '第一年绝对误差

Text4.Text = Round(XD(k, 1), 5) '第一年相对误差

Text5.Text = Round(sumQ(2), 5) '第二年实测径流量Q

Text6.Text = Round(sumR(2), 5) '第二年计算径流量

Text7.Text = Round(JD(k, 2), 5) '第二年绝对误差

Text8.Text = Round(XD(k, 2), 5) '第二年相对误差

End If

Next k

Text9.Text = mink / 1000 '输出最优的KC值

End Sub

2、参数Kc的率定检验

Private Sub Command1_Click() ’Kc的率定检验

Dim P(366) As Single, E(366) As Single, PE(366) As Single '逐日降雨量,蒸发量,P-E

Dim P1(366) As Single, P2(366) As Single, P3(366) As Single, P4(366) As Single '四个雨量站逐日实测降雨量

Dim E0(366) As Single, Ep(366) As Single '逐日蒸发量,蒸发能力

Dim EU(366) As Single, EL(366) As Single, ED(366) As Single '上、下、深层蒸发量

Dim WU(366) As Single, WL(366) As Single, WD(366) As Single, W(366) As Single

Dim Q(366) As Single, R(366) As Single, sumR As Double, sumQ As Single '逐日实测径流量Q,逐日计算径流量R,实测总径流,计算总径流

Dim i As Integer, Kc As Single, WMM As Single, a(366) As Single

Const WUM = 30, WLM = 60, WDM = 50 '模型参数

Const C = 0.17

Const b = 0.3

Const WM = 140

Const FC = 22

Const IM = 0.002

Const h1 = 0.3, h2 = 0.17, h3 = 0.31, h4 = 0.22 '各雨量站的权重

Kc = Val(Text1.Text)

If Option1.Value = True Then

Open "C:\Users\Administrator\Desktop\swyb\89data.txt" For Input As #1 '打开文件For i = 1 To 365

Input #1, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i) '引用89年数据

P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)

sumQ = sumQ + Q(i)

sumP = sumP + P(i)

Text2.Text = sumQ '实测总径流流量

Next i

Close #1

End If

If Option2.Value = True Then

Open "C:\Users\Administrator\Desktop\swyb\90data.txt" For Input As #2 '打开文件For i = 1 To 365

Input #2, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i) '引用90年数据

P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)

sumQ = sumQ + Q(i)

sumP = sumP + P(i)

Text2.Text = sumQ '实测总径流流量

Next i

Close #2

End If

WMM = WM * (1 + b)

WU(1) = 10: WL(1) = 40: WD(1) = 60

W(1) = WU(1) + WL(1) + WD(1)

a(1) = WMM * (1 - (1 - W(1) / WM) ^ (1 / (1 + b)))

'三层蒸散发计算

For i = 1 To 365

Ep(i) = E0(i) * Kc

Next i

For i = 1 To 365

If WU(i) + P(i) >= Ep(i) Then

EU(i) = Ep(i)

EL(i) = 0

ED(i) = 0

Else

If WL(i) >= C * WLM Then

EU(i) = WU(i) + P(i)

EL(i) = (Ep(i) - EU(i)) * WL(i) / WLM

ED(i) = 0

Else

If WL(i) >= C * (Ep(i) - EU(i)) Then

EU(i) = WU(i) + P(i)

EL(i) = C * (Ep(i) - EU(i))

ED(i) = 0

Else

EU(i) = WU(i) + P(i)

EL(i) = WL(i)

ED(i) = C * (Ep(i) - EU(i)) - EL(i)

End If

End If

End If

E(i) = EU(i) + EL(i) + ED(i)

PE(i) = P(i) - E(i)

'产流量计算

If PE(i) > 0 Then '产流

If a(i) + PE(i) < WMM Then '蓄满前

R(i) = PE(i) + W(i) - WM + WM * (1 - (PE(i) + a(i)) / WMM) ^ (b + 1) a(i + 1) = PE(i) + a(i)

W(i + 1) = W(i) + PE(i) - R(i)

Else '蓄满

R(i) = PE(i) + W(i) - WM

a(i + 1) = WMM

W(i + 1) = WM

End If

Else

R(i) = 0 '不产流

W(i + 1) = W(i) + PE(i)

a(i + 1) = WMM * (1 - (1 - W(i + 1) / WM) ^ (1 / (1 + b)))

End If

If WU(i) + P(i) - EU(i) - R(i) <= WUM Then

WU(i + 1) = WU(i) + P(i) - EU(i) - R(i)

WL(i + 1) = WL(i) - EL(i)

WD(i + 1) = WD(i) - ED(i)

Else

WU(i + 1) = WUM

If WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) <= WLM Then

WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM)

WD(i + 1) = WD(i) - ED(i)

Else

WL(i + 1) = WLM

If WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM <= WDM Then

WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM

Else

WD(i + 1) = WDM

End If

End If

End If

Next i

For i = 1 To 365

sumR = sumR + R(i) * 653000 * (1 - IM) / 24 / 3600 '透水面积上的R求和并将其单位由(mm)转化为(m3/s)

Next i

sumR = sumR + sumP * 653000 * IM / 24 / 3600 '计算的径流总量等于透水面积上的产流加上不透水面积上的直接产流

Text3.Text = sumR '计算总径流流量

Text4.Text = Round((sumR - sumQ), 4) '绝对误差

Text5.Text = Round(((sumR - sumQ) / sumQ), 4) '相对误差

End Sub

3、洪水径流预报计算

Private Sub Command2_Click() ’洪水径流预报计算

Dim i As Integer

Dim P(28), E(28), PE(28), Ep(28) As Single '降雨量,蒸发量,P-E,蒸发能力

Dim EU(28), EL(28), ED(28) As Single '上、下、深层土壤蒸发量

Dim WU(29), WL(29), WD(29) As Single '上、下、深层土壤含水量

Dim W(29) As Single, R(28) As Single, rpe(28) As Single, rg(28) As Single, rs(28) As Single

Dim WUM As Integer, WLM As Integer, WDM As Integer '上、下、深层土壤含水容量

Dim C, b, FC, WM, WMM, a(29), ep2(28) As Single

Dim P1(28) As Single, P2(28) As Single, P3(28) As Single, P4(28) As Single '四个雨量站实测降雨量

Dim Qg0, Cg As Single '地下径流初始流量,流量消退系数

Dim U(28) As Integer, Kc As Single

Dim Q(28) As Single, Qs(28) As Single, Qg(28) As Single, j As Integer

Const h1 = 0.3, h2 = 0.17, h3 = 0.31, h4 = 0.22 '各雨量站的权重

Kc = Val(Text1.Text)

WUM = 30: WLM = 60: WDM = 50: C = 0.17: b = 0.3: FC = 22: WM = 140 '模型参数赋值WMM = WM * (1 + b)

WU(1) = 10: WL(1) = 60: WD(1) = 50

W(1) = WU(1) + WL(1) + WD(1)

a(1) = WMM * (1 - (1 - W(1) / WM) ^ (1 / (1 + b)))

Qg0 = 55: Cg = 0.976

Open "C:\Users\Administrator\Desktop\水文预报课程设计总\暴雨过程.txt" For Input As #1 For i = 1 To 28

Input #1, ep2(i), P1(i), P2(i), P3(i), P4(i)

P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)

Ep(i) = ep2(i) * Kc

Next i

Close #1

'三层蒸散发计算

For i = 1 To 28

If WU(i) + P(i) >= Ep(i) Then

EU(i) = Ep(i): EL(i) = 0: ED(i) = 0

ElseIf WL(i) >= C * WLM Then

EU(i) = WU(i) + P(i)

EL(i) = (Ep(i) - EU(i)) * WL(i) / WLM

ED(i) = 0

ElseIf WL(i) >= C * (Ep(i) - EU(i)) Then

EU(i) = WU(i) + P(i)

EL(i) = C * (Ep(i) - EU(i))

ED(i) = 0

Else

EU(i) = WU(i) + P(i)

EL(i) = WL(i)

ED(i) = C * (Ep(i) - EU(i)) - EL(i)

End If

E(i) = EU(i) + EL(i) + ED(i)

PE(i) = P(i) - E(i)

'产流量计算

If PE(i) > 0 Then

If a(i) + PE(i) < WMM Then

R(i) = PE(i) + W(i) - WM + WM * (1 - (PE(i) + a(i)) / WMM) ^ (b + 1)

a(i + 1) = PE(i) + a(i)

W(i + 1) = W(i) + PE(i) - R(i)

Else

R(i) = PE(i) + W(i) - WM

a(i + 1) = WMM

W(i + 1) = WM

End If

Else

R(i) = 0

W(i + 1) = W(i) + PE(i)

a(i + 1) = WMM * (1 - (1 - W(i + 1) / WM) ^ (1 / (1 + b)))

End If

rpe(i) = R(i) / PE(i) '产流面积

If WU(i) + P(i) - EU(i) - R(i) <= WUM Then

WU(i + 1) = WU(i) + P(i) - EU(i) - R(i)

WL(i + 1) = WL(i) - EL(i)

WD(i + 1) = WD(i) - ED(i)

Else

WU(i + 1) = WUM

If WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) <= WLM Then

WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM)

WD(i + 1) = WD(i) - ED(i)

Else

WL(i + 1) = WLM

If WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM <= WDM Then

WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - WUM) - WLM

Else

WD(i + 1) = WDM

End If

End If

End If

Next i

'二水源划分

For i = 1 To 28

If R(i) = 0 Then

rg(i) = 0: rs(i) = 0

Else

If PE(i) < FC Then

rg(i) = R(i)

rs(i) = 0

Else

rg(i) = FC * rpe(i)

rs(i) = R(i) - rg(i)

End If

End If

Next i

Open "C:\Users\Administrator\Desktop\水文预报课程设计总\单位线.txt" For Input As #4 '打开单位线文件

For i = 1 To 11

Input #4, U(i) '读取数据

Next i

Close #4

'地面径流汇流计算用单位线推求

For i = 1 To 28

For j = 1 To 28

If 1 <= i - j + 1 And i - j + 1 <= 28 Then

Qs(i) = Qs(i) + rs(j) / 10 * U(i - j + 1)

End If

Next j

Next i

'地下径流汇流计算采用出流系数法

Qg(1) = Cg * Qg0 + (1 - Cg) * rg(1) * 553 / (3 * 3.6)

For i = 2 To 28

Qg(i) = Cg * Qg(i - 1) + (1 - Cg) * rg(i) * 553 / (3 * 3.6)

Next i

For i = 1 To 28

Q(i) = Qs(i) + Qg(i)

Next i

Open "C:\Users\Administrator\Desktop\水文预报课程设计总\次洪计算结果.txt" For Output As #5 '打开文件

For i = 1 To 28

Print #5, Qs(i); Qg(i); Q(i) '输出计算结果

Next i

End Sub

模拟简单计算器实训

苏州市职业大学 课程设计说明书 名称___模拟简单计算器_______________ 2011 年12月26 日至2011年12月31 日共1 周 院系__ 计算机工程系 班级10嵌入式 姓名 系主任____李金祥 教研室主任刘文芝 指导教师徐丽华、刘文芝

目录 一.课程设计的目的与要求 (2) 1.课程设计的目的 (2) 2.课程设计的要求 (2) 二.题目说明 (2) 2.1开发背景 (3) 2.2 开发工具介绍 (4) 2.3 小组成员分工 (4) 三.硬件方案 (5) 3.1硬件设计 (5) 3.2电路原理图 (7) 四.软件设计 (8) 4.1 模块划分 (8) 4.2 模块结构图 (9) 4.3 液晶显示模块 (9) 4. 4 定时器模块 (6) 五.运行结果分析与系统改进 (10) 六.遇到的问题和解决方法 (11) 七.课程设计总结 (11) 八.参考文献 (11)

一.课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门专业技术基础课,是一门实践性很强的课,单片机课程设计要求将所学的理论知识通过实践加强理解和认识,提高学生们对单片机的认识,同时提高同学们的设计能力和实践动手能力。 同时《单片机原理与应用》也是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。同时也为了提高学生的学习能力,锻炼同学之间的合作能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。 认真编写课程设计报告。 课程设计可以由2~4名同学合作完成一个课题。全体成员应共同完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。 整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。 课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。 1、对系统进行功能需求分析; 2、设计合理的模块结构和系统框架; 3、编程简练,程序功能齐全,能正确运行; 4、说明书、流程图要清楚; 5、课题完成后必须按要求提交课程设计报告;

MFC课程设计报告一个简单的计算器应用程序样本

设计一个简单的计算器应用程序 一、设计目标与内容 1.了解Windows编程的基础知识, 掌握MFC应用程序的基本知识; 2.基本掌握面向对象程序设计的基本思路和方法; 3.掌握用VC++开发应用程序的的一般步骤和方法; 4.能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。 5.在程序中注意处理数据和运算符的输入, 计算结果的显示。二,设计要求 1.用VC++进行编码, 实现应用程序的功能。注重编码质量, 代码要有适当的注释; 2.提交设计报告一份( 课程设计任务书、目录、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献) 。

一个简单的计算器应用程序 总体设计 能够利用所学的基本知识,设计一个简单的计算器应用程序, 实现基本的加、减、乘、除、求平方根, 求倒数等基本运算( 必须实现的功能) , 实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常见对数等基本运算( 这部分功能选做) 。在程序中注意处理数据和运算符的输入, 计算结果的显示。 详细设计 ◆新建工程Counter 新建工程, 选择对话框应用程序。 ◆程序运行主界面

图2-1 在对话框内添加相应的控件, 分别给编辑框添加三个变量m_N1,m_N2和m_Result。 然后添加一个组合框, 在里面添加十二个单选按钮设置第一个单选按钮为组, 如图 图2-2 然后给对话框类添加一个int变量Operator用来作相应运算时的标记。 给控件添加相应的函数 1、给单选按钮添加相应的函数 void CCounterDlg::OnRadio1() { Operator=1; } void CCounterDlg::OnRadio2()

简易计算器面板小程序

[java語言與程序設計]简易计算器面板小程序 歸真我发表于:2011/8/1822:49:17标签(TAG):简易计算器面板java小程序 /**C1.java简易计算器面板小程序*/ import java.applet.*;//引入Java系统标准类库中java.applet包 import java.awt.*;//引入Java系统标准类库中java.awt包 import java.awt.event.*;//引入Java系统标准类库中java.awt.event包 public class C1extends Applet{ Label b;//标题标签对象 TextField t1,t2,t3;//三个文本框对象 Button btn1,btn2;//两个按钮对象 CheckboxGroup se;//单选按钮组,它由四个互斥的按钮组成,用来选择计算类型。 Checkbox a,s,m,d;//四个单选按钮,分别代表加、减、乘、除四种运算。 public void init(){ b=new Label("简易计算器面板设计");//创建标题标签对象 t1=new TextField(13);//创建文本框1,用来输入操作数1 t2=new TextField(13);//创建文本框2,用来输入操作数2 t3=new TextField(13);//创建文本框3,用来输出运算结果 btn1=new Button("等于");//创建按钮1“等于”,用来对输入的两操作数进行运算btn2=new Button("重置");//创建按钮2“重置”,用来清空三个文本框,并将计算类型置为初始状态(选中加法)。 se=new CheckboxGroup();//创建单选按钮组 a=new Checkbox("加",true,se);//创建单选按钮:加 s=new Checkbox("减",false,se);//创建单选按钮:减 m=new Checkbox("乘",false,se);//创建单选按钮:乘 d=new Checkbox("除",false,se);//创建单选按钮:除

5800计算器程序下载

阅览室馆友我的图书馆 kaixin100 | | 分享

U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos( G+QEFW (C+FWD))+Acos(G+QEMW(C+MWD)))→X: V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+ QEFW(C+FWD))+Asin(G+QEMW(C+MWD))) →Y: G+QEW(C+WD)+90→F:X+Zcos(F)→X:Y+Zsin(F)→Y 反算子程序SUB2 G-90→T (Y-V)cosT-(X-U)sin(T) →W Abs(W)→W:0→Z Lbl6:Prog "SUB1" T+QEW(C+WD) →L:(J-Y)cos(L)-(I-X)sin(L)→Z IF Abs(Z)<1E-6:Then0→Z:Prog "SUB1":(J-Y)÷sin(F)→Z:Else W+Z→W:Goto6:IfEnd 数据库子程序SUB0 Goto 1(线元可输入多条,分离式可在前多加一位,匝道一样。例:左幅为K129+500,右幅输线元参数里程为1129+500,其他不变,前面 1为任意数字,计算机便于区分) Lbl 1:IF S<线元终点里程:Then@@@→O(线元起点里程) :@@@ →U(线元起点X坐标):@@@→V(线元起点Y坐标):@@@→G(线元起点计算方位角):@@@→P(线元起点半径):@@@→R(线元止点半径):@@@→H(线元长度):@@@→Q(线元左、右偏标志,左偏-1,右偏1,直线为0):Return:IfEnd IF S<线元终点里程:Then@@@→O(线元起点里程) :@@@ →U(线元起点X坐标):@@@→V(线元起点Y坐标):@@@→G线元(起点计算方位角):@@@→P(线元起点半径):@@@→R(线元止点半径):@@@→H(线元长度):@@@→Q(线元左、右偏标志,左偏-1,右偏1,直线为0):Return:IfEnd 。。。。。。。。。。。。。。。。。。。。。。。。。。。 一程序功能 本程序由一个主程序(ZBJS)和3个子程——正算子程序(SUB1)、反 算子程序( SUB2) 、数据库子程序(SUB0)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线 元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲 率半径、止点曲 率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标 进行正反算。另 外也可以将本程序中核心算法部分的两个子程序移植到其它相关的 程序中,用于对曲 线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及CASIO fx-4850P计算器上运行。 二、使用说明

最新计算机模拟试卷操作题答案

模拟卷1 三、简答题: 1、外存存储器有哪些?内存分哪两种?P13、15 答:外存存储器包括软盘、硬盘、光盘、U盘等。内存分只读存储器ROM和随机存取存储器RAM。 2、计算机网络的分类(按网络覆盖的范围)?P230 答:局域网、城域网、广域网和互联网。 3、常见的视频文件格式有哪些(至少四种)?P343-344 答:视频格式有:.avi格式、.mpg格式、.rm格式和.mov格式。 4、Windows操作题目(写出关键步骤) (1)在桌面上建立AA文件夹,在AA文件夹建立一个名为“JSB”的快捷方式,该快捷方式所指向的对象为“记事本”程序。(记事本程序的文件为 “C:\WINDOWS\system32\notepad.exe”) 步骤:在桌面空白处右击—选择新建文件夹,重命名为“AA”,打开“AA”文件夹,右击选择创建快捷方式,在“浏览”中找到 “C:\WINDOWS\system32\notepad.exe”,点下一步,名称输入“JSB”,完成即可。 (2)将CC文件夹中的“Excel”和“Word ”两个文件夹复制到AA文件夹中,并将“Excel”改名为“TEST”,并将其设置为隐藏属性。 步骤:打开“cc”文件夹,按住“ctrl”键选中“excel”和“word”两个文件夹,右击选择“复制”,打开“AA”文件夹,右击粘贴。在“excel”文件上右击,重命名为“TEST”,右击选择属性,在常规选项卡中,将属性改为“隐藏”。 5、WORD操作题目(6分) (1)修改Word文档中的文字字符的字体、颜色、大小,可以使用哪两种不同的方法实现?P90 答:通过“格式”工具栏和通过菜单“格式”—“字体”命令。 (2)修改文档中的首行缩进2个字符,有哪两种方法实现?P91 答:方法一:选中待修改的文档,把窗口上方的标尺左上的那个小三角往右方移动两个字符的距离,即可。 方法二:选中待修改的文档,右击——段落,在对话框内,特殊格式选择首行缩进,度量值输入2字符,即可。 (3)Word中的哪些对象可以图文混排的? 答:图片、图形,艺术字、文本框等(不确定) 6、EXCEL题目(6分) (1)列举几种Excel中的函数?p156 答:有数学(数值计算)函数、统计函数、逻辑函数、日期与时间函数、财务函数、文本函数等。 (2)列举几种对工作表的操作有哪些?p151 答:选择工作表插入工作表删除工作表移动和复制工作表重命名工作表

计算器java课程设计

目录 一、课设任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (4) 五、运行调试与分析讨论 (14) 六、设计体会与小结 (18) 七、参考文献 (19)

一、课设任务及要求 1)课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、需求分析 ⑴、开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 ⑵设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 ⑶设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed 事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图1 计算器运行界面

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

CASIO fx-5800P实用工程测量程序

一、QXFY 辛甫森公式放样程序 1. “X0”? U:“Y0”?V 2. “XA”? A:“Y A”? B:“CA”? C:“1÷RA”?D:“1÷RB”?E: “KA”?F:“KB”? G 3. Lb1 1:“KI”?H:“JJ”?L:“Y+Z-”?R 4. If H>G Or H

公路测量卡西欧5800万能程序

一、前言本程序是《CASIO fx-5800P计算与道路坐标放样计算》中道路坐标放样计算程序的升级改进版本。原道路坐标放样计算程序只基于道路的单个基本型曲线,有效计算范围仅包括平曲线部分和前后的两条直线段,使用时需要输入平曲线设计参数,无坐标反算桩号功能。改进后的程序名称为:道路中边桩坐标放样正反算程序(全线贯通),增加了可实现全线贯通的数据库功能和坐标反算桩号功能,主要是: 1.使用道路平面数据库子程序,可将一段或若干段道路的交点法格式平面参数(可容易从直线、曲线及转角表中获得)以数据库子程序形式输入计算器,程序在计算时省却了输入原始数据的麻烦; 2.坐标正算方面,输入桩号即可进行道路的中、边桩坐标计算,若输入了测站坐标,还可同时计算全站仪极坐标放样数据(拨角和平距); 3.坐标反算方面,输入平面坐标,即可计算对应的桩号和距中距离(含左右信息); 4.对于存在断链的道路,可分段分别编写数据库子程序,然后在主程序中添加一个路段选择的功能即可实现(可参照立交匝道程序中匝道的选择)。程序的特点: 1.可进行中桩坐标的正、反算,程序代码简洁,便于阅读和改写; 2.主程序通过调用数据库子程序,省却了使用时输入平面参数的繁琐; 3.使用数据库子程序,换项目只需改写数据库子程序,程序通用性强。二、道路示例项目基本资料基本资料同《CASIO fx-5800P计算与道路坐标放样计算》第6章HY高速公路第2合同段(合同段起止桩号: K4+800~K9+600)。这里摘取直线、曲线及转角表资料如下.

.

. 三、程序代码 .

. .

. .

实用计算器程序

目录 1.基本功能描述 (1) 2.设计思路 (1) 3.软件设计 (10) 3.1设计步骤 (10) 3.2界面设计 (10) 3.3关键功能实现 (12) 4.结论与心得 (14) 5.思考题 (15) 6.附录 (17) 6.1调试报告 (17) 6.2测试结果 (18) 6.3关键代码 (21)

实用计算器程序 1.基本功能描述 (1)可以计算基本的运算:加法、减法、乘法、除法。 (2)可以进行任意加减乘除混合运算。 (3)可以进行带任意括号的任意混合运算。 (4)可以进行单目科学运算:1/x、+/-、sqrt、x^2、e^2等。 (5)可以对显示进行退格或清除操作。 (6)可以对计算结果自动进行存储,并在用户需要的时候查看,并且可在其基础上进行再运算操作。 (7)界面为科学型和普通型,可在两界面间通过按钮转换。 2.设计思路 计算器属于桌面小程序,适合使用基于对话框的MFC应用程序设计实现。首先要思考的问题是:我的程序需要实现什么样的功能?需要哪些控件?需要哪些变量?需要哪些响应? 我们知道基于对话框的MFC应用程序的执行过程是:初始化、显示对话框,然后就开始跑消息循环列表,当我们在消息循环列表中获取到一个消息后,由相应的消息响应函数执行相应的操作。根据这个流程我们制定出计算器程序的程序框架主流程图,如下页图1所示。 根据程序主流程图可以看出,我们需要一些能响应用户操作的响应函数来实现我们的计算器相应按键的功能。

图1 程序主流程图 说明:所以流程图由深圳市亿图软件有限公司的流程图绘制软件(试用版)绘制,转 存PDF后导出为图片加入到word中的,所以可能会打印效果不好,但确实为本人绘制。

自己编的c#小程序—计算器

实验内容 1.仿照windows自带的计算机用C#语言做一个能简单加减乘除的计算器 using System; using System.Collections.Generic; using https://www.360docs.net/doc/af13284502.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private bool ClearDisplay = true; private string Op; private double Op1; private double Op2; private double result; public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void Form1_Load() { } private void ce_Click(object sender, EventArgs e) { tb.Text = ""; Op = ""; Op1 = 0; Op2 = 0; result = 0; } private void num0_Click(object sender, EventArgs e) { tb.Text = tb.Text+ "0"; Op1 = System.Convert.ToDouble(tb.Text);

坐标换带计算

坐标换带计算 有一组坐标,怎么迅速知道它们是3度带的还是6度带的? 1.我国采用6度分带和3度分带: 1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,……表示.即东经0~6度为第一带,其中央经线的经度为东经3度;东经6~12度为第二带,其中央经线的经度为9度。 1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,……表示,全球共划分120个投影带,即东经1.5~ 4.5度为第1带,其中央经线的经度为东经3度,东经4.5~7.5度为第2带,其中央经线的经度为东经6度。 地形图上公里网横坐标前2位就是带号,例如:1∶5万地形图上的横坐标为18576000,其中18即为带号,2933000为纵坐标值。 2.当地中央经线经度的计算 六度带中央经线经度的计算:当地中央经线经度=6°×当地带号-3°,例如:地形图上的横坐标为18576000,其所处的六度带的中央经线经度为:6°×18-3°=105°。 三度带中央经线经度的计算:中央经线经度=3°×当地带号。 一个好记的方法:在中华人民共和国陆地范围内,坐标(Y坐标,8位数,前两位是带号)带号小于等于23的肯定是6度带,大于等于24的肯定是3度带。

3.只知道经纬度时中央经线的计算 将当地经线的整数部分除以6,再取商的整数部分加上1°。再将所得结果乘以6后减去3°,就可以得到当地的中央经线值。 如106°15′00″,用106°/6取整得17°,(17°+1°)*6-3°=105°,即当地的中央经线值为105°。

FX5800计算器公路全线坐标正、反算计算程序

5800计算器公路全线坐标正、反算计算程序FX5800全线贯通万能正、反算程序(一体化、超好用、短小、易懂) FX5800计算器的积分程序(正反算、全线贯通、新线路)终极版 ZHUCHENGXU主程序 "1.ZS,2.FS" ?→Q←┘输入1正算,输入2反算 “NEW=0,OLD≠0”?Z←┘ IfZ=0:Then“X0=”?A:“Y0=”?B:“C0=”?C:“1/R0=”?D:“1/RI=”?E:“SP=”?F:“EP=”?G:Ifend:Q=2=>Goto 2←┘ Lbl1 :“KM=,<0 Stop”?H:H<0=>Stop:“PJ=”?O:“PY=”?L←┘ LblZ:Z=1=> Prog“01”:Z=2=> Prog“02”←┘选择数据库文件,可增加 H- F→X:0.5(E-D)÷(G-F)→N←┘ C+(XD+NX2)*180÷π→P:P<0=>P+360→P:P>360=>P-360→P←┘- A+∫(cos(C+(XD+NX2)*180÷π),0,X)+Lcos(P+O)→U←┘ B+∫(sin(C+(XD+NX2)*180÷π),0,X)+Lsin(P+O)→V←┘ Q=2=>Goto4:Cls:Fix 3←┘ "Xn=":Locate4,1,U:"Yn=": Locate5,2,V:“FWJ=”:PDMS◢ Norm 2:Cls:Goto1←┘ Lbl2:“XD=,<0,STOP”?R:R<0=>Stop:“YD=”?S←┘ “KMDG=”?H :90→O:0→L:GotoZ←┘(H线路范围内的任意桩号) Lbl4:Pol(R-U,S-V):J<0 => J+360→J←┘ Whileabs(Icos(J-P))≤0.001:P-J>180=> J+360→J: P-J<-180=> P+360→P:If P-J>0:then -I→L:else I→L :Ifend:Goto3: Whileend:H+Icos(J-P)→H:GotoZ←┘ Lbl3:Cls:Fix 3←┘

windows自带计算器详细使用方法-图文并茂5页word文档

Windows自带的计算器详细使用方法(图文并茂) 以16的开平方的计算方法为例: 1.打开电脑自带计算器,选择查看中的科学型; 2.进入科学型计算器; 3.输入16; 4.勾选Inv; 5.按按钮; 6.输入2,注意了,不是输入1/2,一定要是2,才正确; 7.按按钮。 结果 计算完成。 其他: 一、进行复杂运算 我们平时使用计算器时,往往进行简单计算,如8×9=72。如果复杂些,就一步步进行计算,如要计算(4+5)×6时,就需要先算4+5=9,再算9×6=120。现在我们使用计算器的高级功能就可以一步实现这个运算。 我们打开计算器,是默认的界面。点击计算器的“查看”下拉菜单,点中“科学型”,就会出现更大的窗口:首先,我们在记事本里编写好我们要的计算式,如: (4+5)×6,然后将它复制。打开计算器的“编辑”菜单,再点击“粘贴”,做完这些操作后,按下计算器的“=”按纽,计算器就会将最后的计算结果显示在输出文本框中。 二、数学计算 普通的计算器具有很强的数学计算功能,它可以计算角度的正弦值、余弦值、正切值等,

Windows计算器也具备了这些功能,并且使用起来也很方便。假如我们要计算正弦值,我们输入角度或弧度的数值后,直接点“sin”按纽,结果就会输出。同时我们还可以方便进行平方、立方、对数、阶数、倒数运算。 三、逻辑运算 Windows计算器可以方便快捷地进行二进制、八进制、十进制、十六进制之间的任意转换。假如我们要把十进制数69转换成到二进制数,我们首先通过计算器输入69,完毕后点“二进制”单选按纽,计算器就会输出对应的二进制数。 如果要转换成其他进制,点击对应的按纽就可以了。需要注意的是在四个进制按纽后面还有四个按纽,它们的作用是定义数的长度,“字节”把要转换数的长度限制为一个字节,即八位二进制数,“单字”刚是指两个字节长度,“双字”是四个字节长度,“四字”是八个字节长度。 除了可以进行进制转换外,还可以进行与、或、非等逻辑运算。逻辑运算的使用与其他数学计算大同小异。 四、统计功能 计算器另外一个有特色的功能是统计。我们在科学型模式下按下“Sta”按纽,就会弹出统计框。我们要使用统计功能,首先要录入统计数据。假如我们的原始数据为1、2、3、4。我们首先通过计算器键盘输入1,然后按“Dat”按纽,数据就会输入到统计框中。其余的数据同样的方法依次输入。这时我们就可以开始对数据进行外理了。如果要对统计数据求和,只需按下“Sum”按纽,结果就会输出。同样,按下“Ave”按纽就可以得到平均值,按下“s”按纽就会得到标准偏差。 标准型计算器的使用 对于两个数字的算术运算,可直接单击计算器上的按钮和符号或者从键盘上键入相应的数字和符号即可完成。如果输入有误,可单击“退格”按钮或键入[BackSpace]键将其删除,也可单击数字删除钮[CE]和算式删除钮[C]全部删除。 [CE]的功能是清除当前显示的数值,如:要计算60×40,输入60后,点击“*”按钮,再输入第二个数,本来应输入40,但一不小心输成了77,没关系,单击一下[CE]按钮即可将77清除,接着输入正确的值40,最后点击“=”按钮即可完成计算。

坐标换带计算与应用实例

坐标换带计算与应用实例 土木1212班02组 在生产实践中通常有以下两种情况需要换带计算 ⑴控制网中的已知点位于相邻的两个投影带中。如图5 (图5:坐标换带示意图) 中的附合导线,A,B,C,D为已知高级点。A,B 两点位于西带内,具有西带的高斯平面直角坐标值;C,D两点位于东带内,具有东带的高斯平面直角坐标值。在坐标平差计算时,就必须将它们的坐标系统统一起来,或是将A,B点的西带坐标值换算至东带,或是将C,D点的东带坐标值换算至西带。 ⑵国家控制点的坐标通常是6°带的坐标,而在工程测量中往往需要采用带或 1.5°带,这就产生了6°带与带或 1.5°带之间的坐标换算问题。 我们知道,带的中央子午线中,有半数与6°带的中央子午线重合。所以,由6°带到3°带的换算区分为2种情况: ① 3°带与6°带的中央子午线重合如图所示,3°带第 (图6:坐标换带示意图)

41带与6°第21带的中央子午线重合。既然中央子午线一致,坐标系统也就一致。所以,图中P1点在6°带第21带的坐标,也就是该点在3°带第41带的坐标。在这种情况下,6°带与3°带之间,不存在换带计算问题。 ② 3°带中央子午线与6°带分带子午线不重合如图所示,若已知P2点在6°带第21带的坐标,求它在3°带第42带的坐标。由于这2个投影带的中央子午线不同,坐标系统不一致,必须进行换带计算。不过P2点在6°带第21带的坐标与它在3°第41带的坐标相同,所以6°带到3°带坐标换算,也可看作是3°带到3°带的邻带坐标换算。 换带计算目前广泛采用高斯投影坐标正反算方法,他适用于任何情况下的换带计算工作。这种方法的程序是:首先将某投影带的已知平面坐标(x1,y1 ),按高斯投影坐标反算公式求得其大地坐标(B,L);然后根据纬度B和对于所选定的中央子午线的经差,按高斯投影坐标正算公式求其在选定的投影带的平面坐标(x2,y2)。 例如,某点A在新54坐标系6°带的平面坐标为 x1=3589644.287 y1=20679136.439

模拟计算器程序-课程设计

模拟计算器 学生姓名:**** 指导老师:**** 摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。 关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;

目录 1 引言 (3) 1.1课程设计目的 (3) 1.2课程设计内容 (3) 2 设计思路与方案 (4) 3 详细实现 (5) 3.1 表达式的合法判定 (5) 3.2 中缀表达式转化为后缀表达式 (5) 3.3 处理后缀表达式 (7) 3.4 表达式嵌套处理 (8) 4 运行环境与结果 (9) 4.1 运行环境 (9) 4.2 运行结果 (9) 5 结束语 (12) 参考文献 (13) 附录1:模拟计算器源程序清单 (14)

1 引言 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表达式来求解表达式的值。该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。 1.1课程设计目的 数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表达式,并且运用了递归的思想来解决Abs()和Sqrt()中嵌套表达式的问题,其中还有一些统计的思想来判定表达式是否合法的算法。 1.2课程设计内容 本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表达式。 2 判定表达式是否合法。 3 把中缀表达式转化为后缀表达式。 4 求出后缀表达式的结果。 5 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

汇编经典小程序

实验一:判断一个数X的正,负数,还是零。(假设是正数,输出+,是负数,输出-,是零,输出This is a zore !) DATA SEGMENT X DB 10 CR EQU 0DH LF EQU 0AH W DB 'This is a zore!',CR,LF,'$' ZHENG DB '+',CR,LF,'$' FU DB '-',CR,LF,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X AND AL,AL JZ L1 SHL AL,1 JC L3 JMP L2 L1: MOV DX,OFFSET W MOV AH,9 INT 21H JMP L4 L2: MOV DX,OFFSET ZHENG MOV AH,9 INT 21H JMP L4 L3: MOV DX,OFFSET FU MOV AH,9 INT 21H JMP L4 L4: MOV AH,4CH INT 21H CODE ENDS END START 实验二:求十个数中的最小数,并以十进制输出。(若要求最大的,只要把JC 改为JNC 即可)(仅局限于0---16间的数比较,因为ADD AL,30H只是针对一位的十六进制转换十进制的算法) DATA SEGMENT XDAT DB 0AH,1FH,02H,03H,04H,05H,06H,07H,08H,09H MIN DB ? CR EQU 0DH

W DB ' is min',CR,LF,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,9 MOV SI,OFFSET XDAT MOV AL,[SI] L2: CMP AL,[SI+1] JC L1 MOV AL,[SI+1] L1: INC SI LOOP L2 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV DX,OFFSET W MOV AH,9 INT 21H CODE ENDS END START 实验三:设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小从新排列的程序。 DATA SEGMENT BUF DB 87,234,123 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF MOV AL,[SI] ;把3个数取到寄存器中 MOV BL,[SI+1] MOV CL,[SI+2] CMP AL,BL ;排序,将最大数送AL寄存器 JAE NEXT1 XCHG AL,BL NEXT1:CMP AL,CL JAE NEXT2 XCHG AL,CL NEXT2:CMP BL,CL ;将最小输送CL寄存器

坐标的换带计算

坐标的换带计算 为了限制高斯投影长度变形,将椭球面按一定经度的子午线划分成不同的投影带;或者为了抵偿长度变形,选择某一经度的子午线作为测区的中央子午线。由于中央子午线的经度不同,使得椭球面上统一的大地坐标系,变成了各自独立的平面直角坐标系,就需要将一个投影带的平面直角坐标系,换算成另外一个投影带的平面直角坐标,称为坐标换带。 2.2. 3. 1坐标换带的方法 坐标换带有直接换带计算法和间接换带计算法两种。目前采用间接换带计算法,因此下面仅就此方法作一介绍。 如将第一带(东带或西带)的平面坐标换算为第二带(西带或东带)的平面坐标,方法是先根据第一带的平面坐标x,y和中央子午线的经度L。按高斯投影坐标反 算公式求得大地坐标B,L然后根据B,L和第二带的中央子午线经度按高斯投影 坐标正算公式求得在第二带中的平面坐标,。由于在换带计算中,把椭球面 上的大地坐标作为过渡坐标,因而称为间接换带法。这种方法理论上是严密的,精度高,而且通用性强,他适用于6°带与6°带,3°带与3°带,6°带与3°带之间的坐标换带。虽然这种方法计算量较大,但可用电子计算机计算来克服,故已成为坐标换带中最基本的方法。 2.2. 3. 2坐标换带的实际应用 在生产实践中通常有以下两种情况需要换带计算 ⑴控制网中的已知点位于相邻的两个投影带中。如图5 (图5:坐标换带示意图)

中的附合导线,A,B,C,D为已知 高级点。A,B 两点位于西带内,具有西带的高斯平面直角坐标值;C,D两点位于东带内,具有东带的高斯平面直角坐标值。在坐标平差计算时,就必须将它们的坐标系统统一起来,或是将A,B点的西带坐标值换算至东带,或是将C,D点的东带坐标值换算至西带。 ⑵国家控制点的坐标通常是6°带的坐标,而在工程测量中往往需要采用带或 1.5°带,这就产生了6°带与带或 1.5°带之间的坐标换算问题。 我们知道,带的中央子午线中,有半数与6°带的中央子午线重合。所以,由6°带到3°带的换算区分为2种情况: ① 3°带与6°带的中央子午线重合如图所示,3°带第 (图6:坐标换带示意图) 41带与6°第21带的中央子午线重合。既然中央子午线一致,坐标系统也就一致。所以,图中P1点在6°带第

线元法万能坐标计算程序

线元法万能坐标计算程序(适用于CASIO fx-9750GⅡ计算器) 论文https://www.360docs.net/doc/af13284502.html,/:本论文仅供学习交流使用,本站仅作合理转载,原作者可来邮要求删除论 文。 摘要:我国公路建设事业正处于一个高速发展的时期,在公路工程施工过程中,施工技术人员经常要使用全站仪、水准仪进行施工放样、高程测量,在测量过程中,手工计算速度慢,失误率高,工作效率极低。利用CASIO fx-9750GⅡ编程函数计算器强大的内存(可诸存63000个字符)和编程功能,编写各种计算程序,能够在2秒钟内计算出施工放样、桩点坐标等施工过程中的各项数据资料,同时也使我们有更多的时间去挑战更富有创造性的工作。 关键词:坐标放线线元测量程序 1、前言 本程序采用Gauss-Legendre(高斯-勒让德)五节点公式作内核,计算速度(太约2秒)适中,计算精度很高。在此之前,本人曾用过以下公式作内核:①积分公式simpson法②双重循环复化高斯2节点③高斯-勒让德3节点④求和公式复化simpson法⑤双重循环复化simpson法⑥高斯-勒让德4节点,⑦高斯-勒让德5节点,经过测试③计算最快,⑦代码稍长但计算速度只比③⑥稍慢,精度最高,可满足线元长小于1/2πD 的所有线形的精度要求。⑦作内核分别计算圆曲线长1/4πD、1/2πD、3/4πD、πD处的精度,1/4πD时偏差为0.001mm,1/2πD时偏差为0.55m m,3/4πD时偏差为31.63mm,πD时偏差为968mm,偏差按半径倍数增大,如线元长大于1/2πD(1/2圆周长)时,可将其拆分二个或多个线元单位,以确计算保精度。 2、程序特点 事先将所有的平曲线交点的线元要素诸存到计算器内,测量时只输桩号、边距等程序会自动寻找各类要素,一气呵成地完成施工测量任务,中途不需人工转换各类要素数据,本程序可诸存几百条线路的要素数据,计算时可按需选择线路编号进行测量。测量时不需查阅及携带图纸,仅一台CASIO fx-9750GⅡ编程函数计算器即可。 本程序含一个主程序:3XYF,五个子程序:GL(公式内核)、QD(线路选择)、XL(线路要素判断)、GF(坐标反算)、File 1 (要素存放的串列工作簿)。可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该线元段范围内任意里程中边桩坐标进行正反算。 3、计算公式及原理 如图:BC 间为一曲线元,曲线元上任一点的曲率随至B 点的弧长作线性变化。设起点B 的曲率为KA ,终点C 的曲率为KB ,R 为曲线半径。±表示曲线元的偏向,当曲线元左偏时取负号,当曲线元右偏时取正号,直线段以1的45次方代替(即半径无穷大)。 式中:αΑ=起始方位角l =p 点到B的距离lS=曲线总长αp=p 点切线方位角 R1=R5=0.118463442528095 ,R2 = R4 = 0.239314335249683 , R3 = 0.28444444444444 V1=1-V5= 0.046910070 ,V 2= 1-V4 = 1 0.2307653449 V3= 0.5 利用上面公式及CASIO fx-9750GⅡ编程函数计算器可编写下列计算程序。 4、程序清单 (1)、3XYF(主程序) "1→XY2→FS"?→V:V=1=>Goto 1:V=2=>Goto 2↙(选择计算功能) Lbl 1:File 1:”XLn”?→S:Prog “QD”↙(选择线路)

相关文档
最新文档