class Data
{
public:
 double SL1;
 double ZL1;
 double NJ1;
 double SL2;
 double ZL2;
Data() {SL1=0;ZL1=0;NJ1=0;SL2=0;ZL2=0;}
};

解决方案 »

  1.   

    断点在哪一行?m_array_1,m_array_2 没看到有数据插入?贴的代码好乱,你可以分.H 和 .CPP 文件分别贴上代码
      

  2.   

    -----------function.h------------
    #include "afxtempl.h"
    #include "afx.h"
    #include "string.h"
    class Data
    {
    public:
     double SL1;//升力
     double ZL1;//阻力
     double NJ1;//扭矩
     double SL2;//升力
     double ZL2;//阻力
    Data() {SL1=0;ZL1=0;NJ1=0;SL2=0;ZL2=0;}
    };class Result 
    {
    public:
     double ZL;
     double SL;
     double NJ;
     Result() {}
    Result(const Result &Other)
    {
      ZL = Other.ZL;
      SL = Other.SL;
      NJ = Other.NJ;
    }
    void  Interate(  int InterateNum,int CaseNum,int AmplificateNum,int gravity,CString FileName_0,
      CString FileName_1,CArray<Result,Result&> *m_ResultArray);
    };
    -----------------.cpp-----------------------------
    void  Result::Interate(  int InterateNum,int CaseNum,int AmplificateNum,int gravity,CString FileName_0,CString FileName_1,  
       CArray<Result,Result&> *m_ResultArray)
    {     typedef CArray<Data,Data&>m_TransitionArray_1;
          CArray<m_TransitionArray_1,m_TransitionArray_1&>m_array_1;//第一个二维数组用来接收初始读数
        typedef CArray<Data,Data&>m_TransitionArray_2;
          CArray<m_TransitionArray_2,m_TransitionArray_2&>m_array_2;//第二个二维数组用来接收加风状态的读数
    //  CArray <Result ,Result&>m_array;//此数组用来存放最后的数据  
      int i;
      int j;//i统计迭代次数,j表示工况数目
    /*-----------------------------------------------------
                       设置数组大小
    -------------------------------------------------------*/
      m_array_1.SetSize(InterateNum+1);//一维数组设置大小,+1是为了存放最后一次数据
         for (i=0;i<InterateNum;i++)
         {m_array_1[i].SetSize(CaseNum);}//二维数组设置大小
         m_array_2.SetSize(InterateNum+1);//一维数组设置大小
         for (i=0;i<InterateNum;i++)
         {m_array_2[i].SetSize(CaseNum);}//二维数组设置大小
     (*m_ResultArray).SetSize(CaseNum);
        /*-----------------------------------------------------
                      清空数组
    -------------------------------------------------------*/
          for (i=0;i<InterateNum;i++)
             for (j=0;j<CaseNum;j++)
             {    m_array_1[i][j].NJ1=0;
                  m_array_1[i][j].SL1=0;
      m_array_1[i][j].SL2=0;
      m_array_1[i][j].ZL1=0;
      m_array_1[i][j].ZL2=0;
     }//所有数组将数值设置为0;
          for (i=0;i<InterateNum;i++)
             for (j=0;j<CaseNum;j++)
             {    m_array_2[i][j].NJ1=0;
                  m_array_2[i][j].SL1=0;
      m_array_2[i][j].SL2=0;
      m_array_2[i][j].ZL1=0;
      m_array_2[i][j].ZL2=0;
     }//所有数组将数值设置为0;
     for (j=0;j<CaseNum;j++)
             {    (*m_ResultArray)[j].ZL=0;
                   (*m_ResultArray)[j].SL=0;
       (*m_ResultArray)[j].NJ=0;
     }//所有数组将数值设置为0;
    /*-----------------------------------------------------
                      读取初始读数文件并赋值
    -------------------------------------------------------*/
      CStdioFile file_0(FileName_0,CFile::modeRead);//打开初读数文件
      CString FileData;//存放临时数据
          CString Temp[7];
      for (j=0;j<CaseNum;i++)
      {
      file_0.ReadString(FileData);
      sscanf(FileData,"%s","%s","%s","%s","%s","%s","%s",Temp[0],Temp[1],
      Temp[2],Temp[3],Temp[4],Temp[5],Temp[6]);
     m_array_1[0][j].SL1=strtod(Temp[2],NULL)/AmplificateNum;
             m_array_1[0][j].ZL1=strtod(Temp[3],NULL)/AmplificateNum;
             m_array_1[0][j].NJ1=strtod(Temp[4],NULL)/AmplificateNum;
     m_array_1[0][j].SL2=strtod(Temp[5],NULL)/AmplificateNum;
     m_array_1[0][j].ZL2=strtod(Temp[6],NULL)/AmplificateNum;       
    }//存放数据
    /*-----------------------------------------------------
                      读取在加风状态下的数据文件并赋值
    -------------------------------------------------------*/
    CStdioFile file_1(FileName_1,CFile::modeRead);//打开加风状态下的数据文件

      for (j=0;j<CaseNum;i++)
      {
      file_0.ReadString(FileData);
      sscanf(FileData,"%s","%s","%s","%s","%s","%s","%s",Temp[0],Temp[1],
      Temp[2],Temp[3],Temp[4],Temp[5],Temp[6]);
     m_array_2[0][j].SL1=strtod(Temp[2],NULL)/AmplificateNum;
             m_array_2[0][j].ZL1=strtod(Temp[3],NULL)/AmplificateNum;
             m_array_2[0][j].NJ1=strtod(Temp[4],NULL)/AmplificateNum;
     m_array_2[0][j].SL2=strtod(Temp[5],NULL)/AmplificateNum;
     m_array_2[0][j].ZL2=strtod(Temp[6],NULL)/AmplificateNum;       
    }//存放数据
       /*-----------------------------------------------------
                    减去初读数,并放在m_array_1中
    -------------------------------------------------------*/     for (j=0;j<CaseNum;i++)
      {
     m_array_1[0][j].SL1=(m_array_2[0][j].SL1-m_array_1[0][j].SL1)*100;
             m_array_1[0][j].ZL1=(m_array_2[0][j].ZL1-m_array_1[0][j].ZL1)*100;
             m_array_1[0][j].NJ1=(m_array_2[0][j].NJ1-m_array_1[0][j].NJ1)*100;
     m_array_1[0][j].SL2=(m_array_2[0][j].SL2-m_array_1[0][j].SL2)*100;
     m_array_1[0][j].ZL2=(m_array_2[0][j].ZL2-m_array_1[0][j].ZL2)*100;     
    }
     /*-----------------------------------------------------
                    进行数据迭代,并放在m_array_1中
    -------------------------------------------------------*/
       for (i=0;i<InterateNum;i++)//循环表示所有工况迭代同步,先后达到InterateNum
     for (j=0;j<CaseNum;j++)
     {   
             m_array_1[i+1][j].SL1=gravity*(0.094693*m_array_1[0][j].SL1+0.0135*m_array_1[i+1][j].ZL1+0.0690*m_array_1[0][j].NJ1);
             m_array_1[i+1][j].ZL1=gravity*(0.039808*m_array_1[0][j].ZL1-0.0117*m_array_1[i+1][j].SL1+0.0514*m_array_1[0][j].NJ1);
             m_array_1[i+1][j].NJ1=gravity*(0.019901*m_array_1[0][j].NJ1-0.00403*m_array_1[i+1][j].SL1+0.0113*m_array_1[i+1][j].ZL1);
     m_array_1[i+1][j].SL2=gravity*(0.087618*m_array_1[0][j].SL2-0.0174*m_array_1[0][j].ZL2);
     m_array_1[i+1][j].ZL2=gravity*(0.038867*m_array_1[0][j].ZL2-0.00102*m_array_1[0][j].SL2);      }//循环完成后,m_array_1[InterateNum][j]是需要的数据
    /*-----------------------------------------------------
                    将得到的数据处理,加到m_array中
    -------------------------------------------------------*/
         
     for (j=0;j<CaseNum;j++)
    {Result result;
     result.SL= m_array_1[InterateNum][j].SL1+m_array_1[InterateNum][j].SL2;
        result.ZL=m_array_1[InterateNum][j].ZL1+m_array_1[InterateNum][j].ZL2;
        result.NJ=m_array_1[InterateNum][j].NJ1;
     (*m_ResultArray).Add(result);
    }
    /*------------------------------------------------------------------
                    数据处理完成,数据转移到m_ResultArray中,以便后续处理
    ---------------------------------------------------------------*/
      /* (*m_ResultArray).SetSize(CaseNum);//设置大小
       for (j=0;j<CaseNum;j++)
             {  (*m_ResultArray)[j].ZL=0;
                 (*m_ResultArray) [j].SL=0;
      (*m_ResultArray) [j].NJ=0;
     }//清零
        for (j=0;j<CaseNum;j++)
             {   (*m_ResultArray)[j].ZL=m_array[j].ZL;
                  (*m_ResultArray)[j].SL=m_array[j].SL;
      (*m_ResultArray)[j].NJ=m_array[j].NJ;
     }//存放完毕*/

    /*------------------------------------------------------------------
                    后续处理,关闭文件,清空没用数组
    ---------------------------------------------------------------*/
      m_array_1.RemoveAll();
       m_array_2.RemoveAll();
       file_0.Close();
       file_1.Close();}
      

  3.   

    代码较长,手抖没贴好。
    .cpp还有主函数部分:
    #include "iostream.h"
    #include "function.h"
    void main()
    { CArray<Result,Result&>m_array;
     int  CaseNum=25;
      m_array.SetSize(CaseNum);//设置大小
      int j;
     for (j=0;j<CaseNum;j++)
             {   m_array[j].ZL=0;
                 m_array[j].SL=0;
     m_array [j].NJ=0;
     }//清零
     
    Result result;
    CString str0="Sddq01.txt";
    CString str1="Sddq02.txt";
     result.Interate(50,25,200,9.8,str0,str1, &m_array);
       //cout <<m_array [2].NJ;
       m_array.RemoveAll();
    }主要是测试这个能否正常使用,后面还需要在放到MFC中