为什么这段代码无法打印到txt文件?

时间:2017-05-25 15:44:39

标签: c++

在这个程序中填充1D数组并且...当我们想要将结果打印到文件时,cout没有问题,这个错误发生了:

terminate called after throwing an instance of 'std::bad_cast'
  what():  std::bad_cast

以下是代码:

#include <iostream>
#include<cmath>
#include<fstream>

using namespace std;

int main()
{
    ofstream ozon("real.txt");
    double E[100],H[100];
    double a,b;
    a=0.5,b=0.5; 
    int step,l=20;

    cout<<"please Enter step: ";
    cin>>step;

    for(int k=-10;k<=l;k++)
    {
        E[k]=0 , H[k]=0;
    } 

    for(int s=1;s<=step;s++)
    {   
        int roze=0;
        for(int m=0;m<=l;m++)
        {
            E[m]=20*sin(0.314*m);

            for(int n=1;n<=l;n++) 
            {
                float k;
                k= b*( (H[n-1])-(H[n])) ;
                if(abs(k)<0.00001 || abs(k)>10000) k=roze;
                E[n] = E[n] +k ;
            }

            for(int n=1;n<=l;n++) 
            {
                float s;
                s= a*((E[n])-(E[n+1]));             
                if(abs(s)<0.00001 || abs(s)>10000) s=roze;
                H[n] = H[n] + s ;               
            }

        }

    }

    float x,y;
    for(int n=0;n<=20;n++)
    {
        x = E[n] ;
        y = H[n] ;
        cout<<n<<"   "<<x<<"   "<<y<<endl;  
        ozon<<n<<"   "<<x<<"   "<<y<<endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:3)

您的代码在此处调用未定义的行为

for(int k=-10;k<=l;k++)
{
    E[k]=0 , H[k]=0;
} 

数组索引从零开始。