效果演示
实验部分简介
-
数据处理要求
由测得的φ
1
,
φ
2
,
φ
1
′
,
φ
2
′
\varphi_1,\varphi_2,\varphi_1′,\varphi_2′
φ1,φ2,φ1′,φ2′ 计算相应的
φ
、
α
\varphi、 \alpha
φ、α 的值,并分别求出
φ
、
α
\varphi、 \alpha
φ、α 的平均数。
-
计算公式
φ
=
1
2
(
∣
φ
1
′
−
φ
1
∣
+
∣
φ
2
′
−
φ
2
∣
)
\varphi=\frac 1 2(|\varphi_1′-\varphi_1|+|\varphi_2′-\varphi_2|)
φ=21(∣φ1′−φ1∣+∣φ2′−φ2∣)
α
=
18
0
。
−
φ
\alpha=180^。-\varphi
α=180。−φ
-
问题
- 公式中绝对值的值不能大于180度,否则应用360度减去该角度后再进行计算。
- 数据要求精确到分,而度和分的换算率是60(这给我编写程序造成了不小的麻烦)。
- 本来十分简单的加减乘除,我却需要创造一个新的数据类型,然后还要给它定义四则运算。
代码实现(C++)
#include<iostream>
using namespace std;
class jd{
public:
int du;//度
int fen;//分
jd():du(0), fen(0){}
jd operator+(jd x){
x.du = du + x.du;
x.fen = fen + x.fen;
if(x.fen >= 60){
x.fen = x.fen - 60;
x.du++;
}
return x;
}
//当前角度除以x
void chu(int x){
fen = fen + du % x * 60;
fen = fen / x;
du = du / x;
}
//角度相减并取绝对值,保证不大于180度
jd jian(jd x, jd y){
jd z;
z.du = x.du - y.du;
z.fen = x.fen - y.fen;
if(z.du < 0){
z.du = -z.du;
z.fen = -z.fen;
}
if(z.fen < 0){
z.du = z.du - 1;
z.fen = z.fen + 60;
}
//不能大于180度
if(z.du >= 180){
z.du = 359 - z.du;
if(z.fen == 0){
z.du = z.du + 1;
}
else {
z.fen = 60 - z.fen;
}
}
return z;
}
};
int main(){
int m = 0;//数据的组数
cin >> m;
jd t_sum;
jd a_sum;
for(int i = 0; i < m; i++){
printf("----第 %d 组----\n", i+1);
jd x1, x2;
jd y1, y2;
jd z1, z2;
jd a;
cout << "第一边:\n";
cin >> x1.du >> x1.fen;
cin >> x2.du >> x2.fen;
cout << "第二边:\n";
cin >> y1.du >> y1.fen;
cin >> y2.du >> y2.fen;
z1 = z1.jian(x1, y1);
z2 = z2.jian(x2, y2);
z1 = z1 + z2;
z1.chu(2);
t_sum = t_sum + z1;
cout << "光学面法线夹角值:" << z1.du << "度 " << z1.fen << "分" << endl;
a.du = 180;
a = a.jian(a, z1);
a_sum = a_sum + a;
cout << "顶角值:" << a.du << "度 " << a.fen << "分" << endl << endl;
}
t_sum.chu(m);
a_sum.chu(m);
cout << "法线夹角平均值:" << t_sum.du << "度 " << t_sum.fen << "分" << endl;
cout << "顶角平均值:" << a_sum.du << "度 " << a_sum.fen << "分" << endl;
return 0;
}
/*测试数据
4
115 4
295 6
235 11
55 5
104 39
284 41
224 37
44 32
95 49
275 55
215 59
35 53
84 20
264 23
204 25
24 12
*/
小结
- 实验要求测四组数据,而且是精确到分,我感觉算起来挺麻烦的。于是写bug一年多的我欣然决定写个程序来帮我完成计算任务,谁曾想到,看似简单的计算,我写程序居然花了一个多小时,才写出能跑的屎山式代码(不过好歹能跑)。
- 再一次感觉,自己编码能力的提升空间还很大。😅
完
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114781.html