c++练习题,利用全局变量进行前方交会数据传递。利用A,B点的坐标和观测的水平角直接计算待定点p的坐标公式,Xp=【XacotB+Xbcota+(Ya+Yb)】/(cotA+cotB。公式是在A,B,P的编号为逆时针编号的情况下推导出来的
时间: 2024-01-22 22:18:47 浏览: 77
以下是使用全局变量进行前方交会数据传递的c++代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 定义全局变量
double Xa, Ya, Xb, Yb, A, B;
// 声明函数
void input(); // 输入A、B点坐标和水平角
void calculate(); // 计算待定点P的坐标
void output(); // 输出待定点P的坐标
int main() {
input();
calculate();
output();
return 0;
}
void input() {
cout << "请输入A点的坐标(格式为Xa,Ya):" << endl;
cin >> Xa >> Ya;
cout << "请输入B点的坐标(格式为Xb,Yb):" << endl;
cin >> Xb >> Yb;
cout << "请输入观测的水平角A和B(单位为度):" << endl;
cin >> A >> B;
// 角度转弧度
A = A * M_PI / 180.0;
B = B * M_PI / 180.0;
}
void calculate() {
double cotA = 1.0 / tan(A);
double cotB = 1.0 / tan(B);
double Xp = (Xa * cotB + Xb * cotA + (Ya + Yb)) / (cotA + cotB);
double Yp = (Xp - Xa) * tan(A) + Ya;
// 将计算结果存入全局变量
Xa = Xp;
Ya = Yp;
}
void output() {
cout << "待定点P的坐标为:" << Xa << "," << Ya << endl;
}
```
以上代码中,我们使用了全局变量来存储A、B点的坐标和水平角,以便在函数之间进行数据传递。在`calculate()`函数中,我们根据公式计算出了待定点P的坐标,并将计算结果存入全局变量中。最后,在`output()`函数中输出待定点P的坐标。
阅读全文