📄 adjustment.cpp
字号:
/////////////////////////////////////////////////////////////////////////
/************************************************************************/
/* 水准测量平常简易程序
*/
/************************************************************************/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
using namespace std;
const int MAX = 100;
const float Limit = 5.0;//mm
struct ObserData
{
char FrontPoint[256];
char BackPoint[256];
float FrontData;
float BackData;
float Height;
}ObserDatas[MAX];
int main()
{
FILE *in, *out;
char inFile[256],outFile[256];
printf("input input filename:\n");
scanf("%s",&inFile);
printf("input output filename:\n");
scanf("%s",&outFile);
//char inFile[256] = "11.txt";
//char outFile[256] = "2.txt";
if (NULL == (in = fopen(inFile,"r")))
{
printf("can not open your infile \n");
}
if (NULL == (out = fopen(outFile,"w")))
{
printf("can not create your outfile \n");
}
float StartHeight, EndHeight,ConstantMeasure;
//读取已知数据
fscanf(in,"%f %f %f",&StartHeight,&EndHeight,&ConstantMeasure);
//读观测数据
int CoutNum = 0;
float DataBiHeCha = 0.0;
while (true)
{
fscanf(in,"%s %s %f %f",ObserDatas[CoutNum].BackPoint,ObserDatas[CoutNum].FrontPoint,
&ObserDatas[CoutNum].BackData,&ObserDatas[CoutNum].FrontData);
ObserDatas[CoutNum].FrontData /= 10000;
ObserDatas[CoutNum].BackData /= 10000;
int bContinue = strcmp(ObserDatas[CoutNum].BackPoint,"END");
//stop read while BackName is the code of "END";
if (!bContinue) break;
DataBiHeCha += (ObserDatas[CoutNum].BackData - ObserDatas[CoutNum].FrontData);
CoutNum ++;
}
//calculate BiHeCha
DataBiHeCha += ((StartHeight - EndHeight));
//cout << CoutNum << "," << DataBiHeCha << endl;
fprintf(out," 水准测量平差 \n");
// Adjustment
float ModifyData = 0.0; //the value of modify
float AdjustSum = 0.0;
/* cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(3);
*/
int bb = 0;
if (Limit >= DataBiHeCha)
{
ModifyData = -DataBiHeCha / CoutNum;
ModifyData /= 10000;
ObserDatas[0].Height = StartHeight + ObserDatas[0].BackData - ObserDatas[0].FrontData + ModifyData;
//cout << ObserDatas[0].FrontPoint <<": " << ObserDatas[0].Height << endl;
//fprintf(out,"%s, %.3f \n", ObserDatas[0].FrontPoint,ObserDatas[0].Height);
for ( int i = 1; i < CoutNum; i++)
{
AdjustSum += ObserDatas[i].BackData - ObserDatas[i].FrontData;
ObserDatas[i].Height = ObserDatas[i-1].Height + ModifyData +
ObserDatas[i].BackData - ObserDatas[i].FrontData;
//cout << ObserDatas[i].FrontPoint << ":" << ObserDatas[i].Height << endl;
}
}
else
{
printf("BiHeCha is %f mm,please check data !\n",DataBiHeCha);
}
int k = 0;
for( int i = 0; i < CoutNum; i++)
{
float fTemp = fabs(ObserDatas[i].FrontData - ObserDatas[i + 1].BackData);
if (fTemp < 1e-7)
{
ObserDatas[i].Height += ConstantMeasure;
k++;
//cout << ObserDatas[i].FrontPoint << ": + 30020 ...." << ObserDatas[i].Height << endl;
fprintf(out,"%s, %.3f \n",ObserDatas[i].FrontPoint,ObserDatas[i].Height);
}
else
{
if(k >= 2)
{
//cout << ObserDatas[i].FrontPoint << ":" << ObserDatas[i].Height + ConstantMeasure << endl;
fprintf(out,"%s, %.3f \n",ObserDatas[i].FrontPoint,ObserDatas[i].Height);
k = -1;
continue;
}
if (k = -1)
{
fprintf(out,"%s, %.3f \n",ObserDatas[i].FrontPoint,ObserDatas[i].Height);
//cout << ObserDatas[i].FrontPoint << ":" << ObserDatas[i].Height << endl;
}
}
}
fclose(in);
fclose(out);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -