C语言程序运行结果写到TXT文件中

py15516931259 2016-04-26 05:26:17
#include <iostream>                                              //是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。                                               
#include <fstream> //C++中当操作文件,即写入、读出的时候要用到这个头文件
#include <string> //使用cin、cout语句来输入输出string类型变量所需头文件
#include <math.h> //是包含一个math的库文件用上这句就可以使用math库文件里的所有函数
using namespace std; //使命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样
ofstream outFile("final.txt");
int main()
{
float x[1024];
float y[1024];
int n = 0; //将n定义为整形,并赋值为0,表示断面数组组数
ifstream myfile("F:\\断面计算.txt"); //打开文件断面计算.txt
if(!myfile) //如果文件不能打开
{
cout << "Unable to open myfile"; //输出"Unable to open myfile"
exit(1); // 即非正常运行导致退出程序
}
else //文件可以打开
{
char str[1024] = {0}; //开辟一个空间
while (!myfile.eof()) //按行读取文件
{
myfile.getline (str, 1024);
sscanf(str, "%f %f", &x[n], &y[n]);//
n++;
}


float e,min=0,max=938,a,A=0,h,u,B,H,X,R,S; //e河底高程最小值,min,max选取水位线最小最大值,a分割图形面积,A水位断面面积,h水位线高度,u两侧点间距离,B河面宽度,H平均水深,X湿周,R水力半径,s水位断面面积,S断面面积,均定义为单精度

int i,b=0,j,t,T; //中间变量,均表示元素序号,i,b,j河底高程数组对应序号 t选取水位个数,均定义为整形


e = y[0]; //将e赋值为y[0],即e的处置为 y[0]
for (i = 0; i< n; i++) //通过循环语句求河底高程最小值
{
if (y[i] < e)
e= y[i];
}
min = ceil (e); //将河底高程最小值向上取整得到水面线最小值
t=int(max-min+1) ; //断面个数计算 t水面线条数
cout << t << endl; //输出水面线条数以便校核



static float *s ; //s水位断面面积组成的一维动态数组,定义为单精度
s= new float [t] ;
for(T=0;T<t;T++) //通过循环语句计算水位断面面积

for(b=0;b<n-1;b++)
{
h=T+min;
if(h<=y[b]&&h<=y[b+1])
a=0;
else if(h>=y[b]&&h>=y[b+1])
a=(x[b+1]-x[b])*(2*h-y[b]-y[b+1])/2;
else if(h<=y[b]&&h>=y[b+1])
a=(x[b+1]-x[b])*(h-y[b+1])*(h-y[b+1])/(y[b]-y[b+1])/2;
else
a=(x[b+1]-x[b])*(h-y[b])*(h-y[b])/(y[b+1]-y[b])/2;
A=A+a;
s[T]=A;
}
for(T=0;T<t;T++)
cout << s[T] << endl; //输出min到max对应的水位断面面积组成的数组


for (int m = 0; m< t; m++) //通过循环语句求最大水位断面面积
{
S=s[0];
if (s[m] > S)
S= s[m];
}

for(j=0;j<n;j++) //循环语句计算湿周
{
u=sqrt((x[j]-x[j+1])*(x[j]-x[j+1])+(y[j]-y[j+1])*(y[j]-y[j+1]));
X=max*2-y[0]-y[n-1]+u;
}
B=x[n-1]-x[0]; //计算断面宽度
H=S/B; //计算断面平均水深
R=S/X; //计算断面水力半径


printf("断面最低点高程:%f\n水位线最小值:%f\n",e,min); //输出断面最低点高程,水位线最小值
printf("测量断面宽度:%f\n",B); //输出测量断面宽度
printf("断面平均水深:%f\n",H); //输出断面平均水深
printf("断面湿周:%f\n",X); //输出断面湿周
printf("断面水力半径:%f\n",R); //输出断面水力半径
return 0;
}
}
...全文
749 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-04-26
  • 打赏
  • 举报
回复
可以通过ofstream来写入文件

#include <iostream> //是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。
#include <fstream> //C++中当操作文件,即写入、读出的时候要用到这个头文件
#include <string> //使用cin、cout语句来输入输出string类型变量所需头文件
#include <math.h> //是包含一个math的库文件用上这句就可以使用math库文件里的所有函数
#include <fstream>
using namespace std; //使命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样
ofstream outFile("final.txt");
int main()
{
float x[1024];
float y[1024];
int n = 0; //将n定义为整形,并赋值为0,表示断面数组组数
ifstream myfile("F:\\断面计算.txt"); //打开文件断面计算.txt
ofstream outfile("F:\\output.txt");//以输出方式打开文件
if(!myfile) //如果文件不能打开
{
cout << "Unable to open myfile"; //输出"Unable to open myfile"
exit(1); // 即非正常运行导致退出程序
}
else //文件可以打开
{
char str[1024] = {0}; //开辟一个空间
while (!myfile.eof()) //按行读取文件
{
myfile.getline (str, 1024);
sscanf(str, "%f %f", &x[n], &y[n]);//
n++;
}


float e,min=0,max=938,a,A=0,h,u,B,H,X,R,S; //e河底高程最小值,min,max选取水位线最小最大值,a分割图形面积,A水位断面面积,h水位线高度,u两侧点间距离,B河面宽度,H平均水深,X湿周,R水力半径,s水位断面面积,S断面面积,均定义为单精度

int i,b=0,j,t,T; //中间变量,均表示元素序号,i,b,j河底高程数组对应序号 t选取水位个数,均定义为整形


e = y[0]; //将e赋值为y[0],即e的处置为 y[0]
for (i = 0; i< n; i++) //通过循环语句求河底高程最小值
{
if (y[i] < e)
e= y[i];
}
min = ceil (e); //将河底高程最小值向上取整得到水面线最小值
t=int(max-min+1) ; //断面个数计算 t水面线条数
cout << t << endl; //输出水面线条数以便校核
outfile << t << endl;


static float *s ; //s水位断面面积组成的一维动态数组,定义为单精度
s= new float [t] ;
for(T=0;T<t;T++) //通过循环语句计算水位断面面积

for(b=0;b<n-1;b++)
{
h=T+min;
if(h<=y[b]&&h<=y[b+1])
a=0;
else if(h>=y[b]&&h>=y[b+1])
a=(x[b+1]-x[b])*(2*h-y[b]-y[b+1])/2;
else if(h<=y[b]&&h>=y[b+1])
a=(x[b+1]-x[b])*(h-y[b+1])*(h-y[b+1])/(y[b]-y[b+1])/2;
else
a=(x[b+1]-x[b])*(h-y[b])*(h-y[b])/(y[b+1]-y[b])/2;
A=A+a;
s[T]=A;
}
for(T=0;T<t;T++)
{
cout << s[T] << endl; //输出min到max对应的水位断面面积组成的数组
outfile << s[T] << endl;
}



for (int m = 0; m< t; m++) //通过循环语句求最大水位断面面积
{
S=s[0];
if (s[m] > S)
S= s[m];
}

for(j=0;j<n;j++) //循环语句计算湿周
{
u=sqrt((x[j]-x[j+1])*(x[j]-x[j+1])+(y[j]-y[j+1])*(y[j]-y[j+1]));
X=max*2-y[0]-y[n-1]+u;
}
B=x[n-1]-x[0]; //计算断面宽度
H=S/B; //计算断面平均水深
R=S/X; //计算断面水力半径


printf("断面最低点高程:%f\n水位线最小值:%f\n",e,min); //输出断面最低点高程,水位线最小值
printf("测量断面宽度:%f\n",B); //输出测量断面宽度
printf("断面平均水深:%f\n",H); //输出断面平均水深
printf("断面湿周:%f\n",X); //输出断面湿周
printf("断面水力半径:%f\n",R); //输出断面水力半径
outfile << "断面最低点高程:"<< e << endl <<"水位线最小值:" << min << endl;
outfile << "测量断面宽度:" << B << endl;
outfile << "断面平均水深:" << H << endl;
outfile << "断面湿周:" << X << endl;
outfile << "断面水力半径:" << R << endl;
outfile.close();
return 0;
}
}

64,671

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧