⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adjustment.cpp

📁 该程序是为高楼沉降变形写的程序
💻 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 + -