大家帮我看看下面的代码 问题出在哪里??怎么会有溢出的问题?
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
vector<float>* newseq( vector<float> sequence,int index_left);
vector<int>* findpip(vector<float> sequence,int index_left,int index_right);
float seq_max( vector<float> sequence,int index_left);
float seq_min( vector<float> sequence,int index_left);
int main()
{
//a[15]={1,3,2,4,5,4,3,5,4,2,4,6,3,4,6}
float seq;
vector<float> ori_sequence;
cout<<"请输入一个序列:";
while(cin>>seq)
{
ori_sequence.push_back(seq);
}
cout<<ori_sequence.size()<<endl;
vector<float> *p_newseq=newseq(ori_sequence,0);//用来指向新序列的指针
vector<float> newsequence=(*p_newseq);
for(vector<float>::iterator iter=newsequence.begin();iter!=newsequence.end();iter++ )
{
cout<<(*iter)<<" ";
}
cout<<endl;
vector<int> *p_ZB=findpip(newsequence,0,newsequence.size());
vector<int> pip_ZB=(*p_ZB);
//vector<int>::iterator iter1;
vector<float> findeachpip;
for(int i=0;i<pip_ZB.size();i++)
{
for(int j=newsequence[i];j<newsequence[i+1];j++)
{
findeachpip.push_back(newsequence[j]);
findpip(findeachpip,pip_ZB[i],pip_ZB[i+1]);
}
}
delete p_newseq;
delete p_ZB;
return 0;
}
float seq_max( vector<float> sequence,int index_left)
{
float tmp_max=sequence[index_left];
for(int i=index_left+1;i<index_left+sequence.size();i++)
{
if (sequence[i]>tmp_max)
{
tmp_max=sequence[i];
}
}
cout<<"最大值为:"<<tmp_max<<endl;
return tmp_max;
}
float seq_min(vector<float> sequence,int index_left)
{
float tmp_min=sequence[index_left];
for(int i=index_left+1;i<index_left+sequence.size();i++)
{
if(sequence[i]<tmp_min)
{
tmp_min=sequence[i];
}
}
cout<<"最小值为:"<<tmp_min<<endl;
return tmp_min;
}
//将序列归一化。
vector<float>* newseq( vector<float> sequence,int index_left)
{
float max_seq=seq_max(sequence, index_left);
float min_seq=seq_min(sequence, index_left);
cout<<"新序列为:"<<endl;
vector <float> *new_seq=new vector<float>;
for(int i=index_left;i<index_left+sequence.size();i++)
{
(*new_seq).push_back((sequence[i]-min_seq)/(max_seq-min_seq));
// cout<<new_seq[i]<<" ";
}
cout<<endl;
return new_seq;
}
//求序列的pip
vector<int>* findpip(vector<float> sequence,int index_left,int index_right)
{
float r=0.5;//定义一个阈值 随便定义一个值
float vd;
vector<int> *ZB=new vector<int>;
cout<<"各个点的vd值为:"<<endl;
for(int i=index_left+1;i<index_right-1;i++)
{
//VD=(b[k]-((b[i]-b[j])*k-j*b[i]+i*b[j])/(i-j))
vd=(sequence[i]-((sequence[index_left]-sequence[index_right])*i-index_right*sequence[index_left]+index_left*sequence[index_right])/(index_left-index_right));
if(vd<0)
vd=-vd;
if(vd>r)
(*ZB).push_back(i);
cout<<vd<<" ";
}
cout<<endl;
cout<<"数组中的pip点坐标为:";
for(int j=0;j<((*ZB).size());j++)
{
cout<<(*ZB)[j]<<" ";
}
cout<<endl;
return ZB;
}