对于一些家庭工作,我正在做以下事情:
int main() {
ofstream file("log.txt");
file << setw(5) << "i"
<< setw(15) << "h"
<< setw(15) << "n"
<< setw(15) << "sum"
<< setw(15) << "diff"
<< endl;
auto write2file = [&file](int i, double h, double n, double sum, double diff) {
file << setw(5) << i
<< setw(15) << h
<< setw(15) << n
<< setw(15) << sum
<< setw(15) << diff
<< endl;
};
double a = 0;
double b = 2;
int n = 1;
double h = (b-a)/n;
double sum = sum_analytic;
double diff = 1;
while (diff > pow(10, -4)) {
h = (b-a)/++n;
sum = ntgrt(a, b, n, h);
diff = abs(sum - sum_analytic);
static int i = 0;
write2file(++i, h, n, sum, diff);
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到C++ 17的if init功能(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0305r1.html),当我宣布时,我会在这里看到相同的模式h,sum和diff外面while循环,但他们只是内部使用.
有没有更好的方法来编写它,可能会利用C++ 17的功能?
Nic*_*las 13
然后你想要的是一个for循环:
for(double diff = 1; diff > pow(10, -4);)
{
double h = (b-a)/++n;
double sum = ntgrt(a, b, n, h);
diff = abs(sum - sum_analytic);
....
}
Run Code Online (Sandbox Code Playgroud)
添加此功能没有意义,while因为您可以使用for和取消增量语句.
| 归档时间: |
|
| 查看次数: |
2993 次 |
| 最近记录: |