如何将函数中计算出来的值保存在一个动态分配的内存中? m_pa=new double[data.m_AryLength/10];for(int i=0;i<data.m_AryLength/10;i++){ data.PIs(); //假设函数中每次都计算得到一个值a,如何将它依次保存在m_pa中?} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int nLen = data.m_AryLength/10;ASSERT(nLen>0);m_pa=new double[nLen];for(int i=0;i<nLen;i++){ m_pa [i] = data.PIs(); } 但如果我的data.PIs()中有三个返回值,比方说是a、b、c,如何保存在m_pa、m_pb、m_pc中呢? m_pa、m_pb、m_pc 3个都用new的方法分别申请 通过参数返回,参数可以是基本变量,也可以是struct. struct _data{ double a, b, c;}int nLen = data.m_AryLength/10;ASSERT(nLen>0);m_pa=new _data[nLen];for(int i=0;i<nLen;i++){ data.PIs(&m_pa[0]->a, &m_pa[0]->b, &m_pa[0]->c); }funs data.pis(double *a, double *b, double *c){ *a = 1.0f; *b = 2.0f; *c = 3.0f;} 更正大,大概是这意思,你试试看struct _data { double a, b, c; } int nLen = data.m_AryLength/10; ASSERT(nLen>0); m_pa=new _data[nLen]; for(int i=0;i <nLen;i++) { data.PIs(&m_pa[i]->a, &m_pa[i]->b, &m_pa[i]->c); } funs data.pis(double *a, double *b, double *c) { *a = 1.0f; *b = 2.0f; *c = 3.0f; } 我不用struct,我的代码其实是这样的:void CQTAView::OnTrendidentification() { int nLen = data.m_AryLength/10; ASSERT(nLen>0); m_Plsy0=new double[nLen]; m_xAve=new double[nLen]; m_slope=new double[nLen]; data.m_Plsstart=10*m_start; data.m_Plsend=10*(m_start+1); data.m_pLsy0 = m_Plsy0; data.m_pXAve = m_xAve; data.m_pSlope= m_slope; for(int m_start=0;m_start<nLen;m_start++) { data.PIs(data.m_pNumber,data.m_pDataAry,10*m_start,10*(m_start+1),m_Plsy0,m_xAve,m_slope); //这个地方应如何添加? m_Plsy0+=1; m_xAve+=1; m_slope+=1; }}void CData::PIs(double xTime[],double yValue[],int m,int n,double* m_pLsy0,double* m_pXAve,double* m_pSlope){ //传入时间和变量值 //其中m为作最小二乘的起始点参数,n为作最小二乘的终点值参数 double sxx=0,sxy=0,syy=0; //初始化最小二乘的参数 double av_x=0,av_y=0,y0=0; //初始化最小二乘的参数 m_Plsstart=m,m_Plsend=n; //传入做最小二乘元素起始点,中止点 // double i_slope=0; //初始化直线的斜率 for(int i=m_Plsstart;i<m_Plsend;i++) //计算最小二乘估计均值参数 { av_x+=xTime[i]/(m_Plsend-m_Plsstart); //计算时间均值 av_y+=yValue[i]/(m_Plsend-m_Plsstart); //计算变量的均值 } for(int j=m_Plsstart;j<m_Plsend;j++) //计算最小二乘的参数 { sxx+=(xTime[j]-av_x)*(xTime[j]-av_x); //计算的参数 sxy+=(xTime[j]-av_x)*(yValue[j]-av_y); //计算的参数 } *m_pSlope=sxy/sxx; //计算拟合曲线的斜率 *m_pLsy0=av_y; //y均值 *m_pXAve=av_x; //x均值 //*m_pSlope,*m_pLsy0,*m_pXAve是我希望返回的值。 //return m_slope; //返回曲线的斜率 return;} (送全部分)VC调用delphi的dll异常,诡异,请教 DirectDraw 基本代码,请大家翻译一下 glRotatef 一个怪异的问题 求教:“连接点”反向通信中参数类型的问题? vc6.0异常删除,救命!!!在线等 创建快捷键方式 怎么使我的visual studio 6.00 Tools中出现HTML help workshop 求取利用VFW开发的视频采集程序的源代码,谢谢! 谁能帮我解释几个简单的概念 关于ODBC中m_strSort的问题 关于translatemessage的疑问 求助双缓冲画图问题
int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_pa=new double[nLen];
for(int i=0;i<nLen;i++)
{
m_pa [i] = data.PIs();
}
{
double a, b, c;
}int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_pa=new _data[nLen];
for(int i=0;i<nLen;i++)
{
data.PIs(&m_pa[0]->a, &m_pa[0]->b, &m_pa[0]->c);
}
funs data.pis(double *a, double *b, double *c)
{
*a = 1.0f;
*b = 2.0f;
*c = 3.0f;
}
{
double a, b, c;
} int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_pa=new _data[nLen];
for(int i=0;i <nLen;i++)
{
data.PIs(&m_pa[i]->a, &m_pa[i]->b, &m_pa[i]->c);
}
funs data.pis(double *a, double *b, double *c)
{
*a = 1.0f;
*b = 2.0f;
*c = 3.0f;
}
{
int nLen = data.m_AryLength/10;
ASSERT(nLen>0);
m_Plsy0=new double[nLen];
m_xAve=new double[nLen];
m_slope=new double[nLen];
data.m_Plsstart=10*m_start;
data.m_Plsend=10*(m_start+1);
data.m_pLsy0 = m_Plsy0;
data.m_pXAve = m_xAve;
data.m_pSlope= m_slope;
for(int m_start=0;m_start<nLen;m_start++)
{
data.PIs(data.m_pNumber,data.m_pDataAry,10*m_start,10*(m_start+1),m_Plsy0,m_xAve,m_slope);
//这个地方应如何添加?
m_Plsy0+=1;
m_xAve+=1;
m_slope+=1;
}
}void CData::PIs(double xTime[],double yValue[],int m,int n,double* m_pLsy0,double* m_pXAve,double* m_pSlope)
{
//传入时间和变量值
//其中m为作最小二乘的起始点参数,n为作最小二乘的终点值参数
double sxx=0,sxy=0,syy=0; //初始化最小二乘的参数
double av_x=0,av_y=0,y0=0; //初始化最小二乘的参数
m_Plsstart=m,m_Plsend=n; //传入做最小二乘元素起始点,中止点
// double i_slope=0; //初始化直线的斜率
for(int i=m_Plsstart;i<m_Plsend;i++) //计算最小二乘估计均值参数
{
av_x+=xTime[i]/(m_Plsend-m_Plsstart); //计算时间均值
av_y+=yValue[i]/(m_Plsend-m_Plsstart); //计算变量的均值
}
for(int j=m_Plsstart;j<m_Plsend;j++) //计算最小二乘的参数
{
sxx+=(xTime[j]-av_x)*(xTime[j]-av_x); //计算的参数
sxy+=(xTime[j]-av_x)*(yValue[j]-av_y); //计算的参数
}
*m_pSlope=sxy/sxx; //计算拟合曲线的斜率
*m_pLsy0=av_y; //y均值
*m_pXAve=av_x; //x均值
//*m_pSlope,*m_pLsy0,*m_pXAve是我希望返回的值。
//return m_slope; //返回曲线的斜率
return;
}