gpt4 book ai didi

c++ - ofstream 数据输出问题

转载 作者:行者123 更新时间:2023-11-28 08:20:40 26 4
gpt4 key购买 nike

在我的程序中,我的 dataout: void outfile 没有写入文件,任何人都可以找出原因吗?

using namespace std;
#include<iostream>
#include<cmath>
#include<iomanip>
#include<fstream>

// Declaration of functions used
void writetable (double, double, double, double);
void tableout (double, double, double, double);
void secant(double, double, double, double, double, double, double, double, double, double&, int&);
void writedata (double, double, double);
void outfile(double, double, double&);
double fx( double, double, double, double, double, double, double);

const double tol=0.0001; // Tolerance for convergence
const int max_iter=50; // Maximum iterations allowed
// main program
int main()
{
int iteration; // Number of iterations

double kr, uc, q, b, radians;

double x0, x1; // Starting values for x
double root; // Root found by secant method
const double PI = 4.0*atan(1.0);
ifstream datain ("shuttle.txt");
ofstream dataout ("results.txt");
datain >> kr >> uc >> q >> b;
x0= 1000;
x1 = 200;
writetable(kr, uc, q, b);
tableout(kr, uc, q, b);
for (double angle = 10; angle <= 70; angle += 15)
{
for (double velocity = 16000; velocity <= 17500; velocity += 500)
{
radians= angle * PI/180 ;
//cout << velocity << endl;
// cout << radians << endl;
// cout << angle << endl;
secant (radians, velocity, kr, uc, q, b, x0, x1, angle, root, iteration);
writedata(angle, velocity, root);
}
}
system("pause");
}

// Definition of function "secant"
// Receives a, b, c, d and x0 values from main program
// Returns root and the iterations required
void secant(double radians, double velocity, double kr, double uc, double q, double b, double x0, double x1, double angle, double& root, int& iteration)
{
double xnminus1, xnplus1, xn; // Local variables
iteration=0; // Initialize iterations
xnminus1=x0;
xn=x1;
do
{
++iteration;
xnplus1 = xn - fx(radians, velocity, kr, uc, q, b, xn)*(xn-xnminus1)/
(fx(radians, velocity, kr, uc, q, b, xn)-fx(radians, velocity, kr, uc, q, b, xnminus1));
//cout<<"x"<<iteration+1<<" = "<<xnplus1<<endl;
xnminus1 = xn;
xn=xnplus1;
}
while ((fabs(fx(radians, velocity, kr, uc, q, b, xnplus1)) >= tol )&& (iteration < max_iter));
root=xnplus1;

//cout<<"\nThe root is = "<<root<<endl;
//cout<<"The number of iterations was = "<<iteration<<endl;
//cout<<"The value of f(x) at the root = "<<fx(radians, velocity, kr, uc, q, b, root)<<endl<<endl;

outfile(angle, velocity, root);
}

// Defines "fx"
double fx(double radians,double velocity, double kr, double uc, double q, double b, double ts)
{
return kr * pow(ts,4.0) + uc * ts - q - pow((velocity / b), 2.0) * sin(radians);
}

void writetable(double kr, double uc, double q, double b)
{
cout <<endl << "Input Parameters:" <<endl;
cout<< "Kr(1/K^2)=" << kr << endl << "uc(1/K)=" << uc <<endl << "q(unitless)=" << q << endl << "b(mph)=" << b<< endl;
cout << " angle..............velocity...........surface temp..............safe..........";
cout << " degs...............mph................Kelvin.....................?............";
cout << "--------------------------------------------------------------------------------";
}

void writedata (double angle, double velocity, double root)
{
cout << left << " " << angle << " "<< velocity << " "<< fixed << setprecision(0) << setw(5) <<root<< " ";
if(root <1000)
cout << "safe"<< endl;
else
cout << "unsafe" <<endl;
}

void tableout(double kr, double uc, double q, double b)
{
ofstream dataout ("results.txt");
dataout<<endl << "Input Parameters:" <<endl;
dataout<< "Kr(1/K^2)=" << kr << endl << "uc(1/K)=" << uc <<endl << "q(unitless)=" << q << endl << "b(mph)=" << b<< endl;
dataout << " angle..............velocity...........surface temp..............safe.........."<< endl;
dataout << " degs...............mph................Kelvin.....................?............"<< endl;
dataout << "--------------------------------------------------------------------------------"<< endl;
}

void outfile (double angle, double velocity, double& root)
{
ofstream dataout ("results.txt");
dataout << left << " " << angle << " "<< velocity << " "<< fixed << setprecision(0) << setw(5) <<root<< " ";
if(root <1000)
dataout << "safe"<< endl;
else
dataout << "unsafe" <<endl;
}

最佳答案

outfile 中的open 是否成功。您已经在 main 中打开了输出文件;一些系统不允许同一个文件被打开两次,或者为了输出而打开两次。 (既然你不使用main中打开的文件,为什么要在那里打开它呢?)

关于c++ - ofstream 数据输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com