C++;和EXE赢得';跑不动 我有以下C++代码:我试图理解代码为什么编译得很好,但是它不会在EXE中运行,我试图从结果中得到输出文件,有什么线索来解释为什么会发生这种情况。它提到的错误是ios::base something 编辑1
这就是错误,C++;和EXE赢得';跑不动 我有以下C++代码:我试图理解代码为什么编译得很好,但是它不会在EXE中运行,我试图从结果中得到输出文件,有什么线索来解释为什么会发生这种情况。它提到的错误是ios::base something 编辑1,c++,c++11,C++,C++11,这就是错误,对“std::ios_base::Init::Init()”的未定义引用。,我最初使用以下方法运行该程序: g++ -o plot1 Derivative.cpp 编辑 我修复了我的代码,代码根据需要获取函数的导数,并将结果返回到dat文件中 #include <cmath> #include <iostream> #include <fstream> #include <string> using namespace std; fl
对“std::ios_base::Init::Init()”的未定义引用。
,我最初使用以下方法运行该程序:
g++ -o plot1 Derivative.cpp
编辑
我修复了我的代码,代码根据需要获取函数的导数,并将结果返回到dat文件中
#include <cmath>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
float function(float j);
int main(){
const double a =.0001;
int i = 0;
string filename;
double x[100], delta[100], deltax[100],dx1[100],y_1[100],y_0[100],derivative_f[100];
ofstream myfile;
cin >> filename;
myfile.open (filename, ios::out | ios::trunc );
for(int i = 1; i < 101; i++) {
x[i]= i*.2;
delta[i] = {a * x[i]};
deltax[i] = {x[i]+delta[i]};
dx1[i] = {deltax[i]-x[i]};
y_1[i] = {function(deltax[i])};
y_0[i] = {function(x[i])};
derivative_f[i] = {(y_1[i]-y_0[i])/dx1[i]};
myfile << x[i] << ' ' << derivative_f[i] << endl;
}
myfile.close();
return 0;
}
float function(float j){
float result;
result = exp(j);
return result;
}
#包括
#包括
#包括
#包括
使用名称空间std;
浮动功能(浮动j);
int main(){
常数双a=0.0001;
int i=0;
字符串文件名;
双x[100],δ[100],δ[100],dx1[100],y_1[100],y_0[100],导数f[100];
流文件;
cin>>文件名;
myfile.open(文件名,ios::out | ios::trunc);
对于(int i=1;i<101;i++){
x[i]=i*.2;
delta[i]={a*x[i]};
deltax[i]={x[i]+delta[i]};
dx1[i]={deltax[i]-x[i]};
y_1[i]={函数(deltax[i])};
y_0[i]={函数(x[i])};
导数_f[i]={(y_1[i]-y_0[i])/dx1[i]};
myfile这是您的第一个问题:
for (int i = 0; 100; i++){
请注意您的条件,100
。这是一个无限循环,因为您没有测试它,100
为“true”。请尝试:
for(int i=0;i<100;i++){
您的第二个循环也有同样的问题。实际上,两个循环都不可能是无限的,因为您的程序在尝试读取/写入未分配的内存时最终会崩溃。什么是“不会运行”的确切含义?您有没有收到任何错误?“它提到的错误是ios::base something。”我们需要的是实际的错误,而不仅仅是错误的部分解释。照目前的情况,错误很可能是我提到的越界访问,但您需要提供实际的错误作为错误的一部分,而不仅仅是它的一小部分的解释。在调试器下运行它,它将直接指向issue@HolyBlackCat我知道了,但那个接电话的人明白了。@HolyBlackCat这是你要求的错误。谢谢+1@ShadowRanger@JoseSerra:您肯定有一些数学错误,例如,您对dx
的计算几乎肯定是错误的,因为您使用了int
s,所以结果是0
,而不是小数。但这与您的程序崩溃无关。@MooingDuck:数组在使用之前是初始化的。仅仅因为它们没有预先初始化并不意味着它们没有初始化。
for (int i = 0; i < 100; i++){