回 帖 发 新 帖 刷新版面

主题:新手:刚接触c++不久,简单的问题希望大家解答一下~

// 就是实现 一个序列到另一个序列的变换,可是就不知道哪里错了,是不是容器的那个地方用错啦?

#include <iostream>
#include <math.h>
#include <vector>
using namespace std;

float newseq(const vector<float> &ori_sequnce,vector<int> &index_left);
int main()
{   
    float a[30]={1,2,4,3,5,6,3,2,4,5,2,6,7,2,9,4,5,7,6,3,2,5,3,7,4,2,5,2,4,5};
    float b[30]=newseq(a[30],0);
    for(int k=0;k<30;k++)
    {
    cout<<"新序列b[30]="<<b[i]<<" ";
    cout<<endl;
    return 0;
    }
}

float newseq( vector<float> &ori_sequence,vector<int> &index_left)//求新序列的函数
{
    int n=ori_sequence.size();
           float sum=0;
    for(int i=index_left;i<index_left+n;i++)
    {
        sum+=ori_sequence(i);
    }
    float ave=sum/n; //均值
    //cout<< ave;
    float mse=0;
    int tmp=0;
    for(i=index_left;i<index_left+n;i++)
          {
              tmp+=(ori_sequence(i)-ave)*(ori_sequence(i)-ave);
    }
    mse=sqrt(tmp/n);//方差
    //cout<<tmp;
    float newseq[n];
    for(int j=0;j<n,j++ )
    {    
       newseq[j]=(ori_sequence[j]-ave)/mse;
    }
    return newseq[n];

}

谢谢各位了!

回复列表 (共2个回复)

沙发

函数是无法返回数组的。所以:
float b[30]=newseq(a[30],0);
这个写法不正确。

先想想你的程序要做什么,再来想应该怎么写。

板凳

目前正在看到容器一部分,练习还没,所以帮不上忙.

我来回复

您尚未登录,请登录后再回复。点此登录或注册