c++报错:invalid conversion from int to int

错误已表明位置,初学求轻喷...
做一个计步软件求每周的步数最大值最小值以及平均值,要求输入多组数据并在最开始输入数据的组数T
#include
#include

using namespace std;
class Step
{
public:
Step(int a[7]);
Step(const Step &c);
~Step(){}
int getMax();
int getMin();
float getAverage();
void showAnswer();
private:
static float Averstep;
int Maxstep,Minstep;
int step[7];
};
Step::Step(int a[7])
{
for(int i=0;i {
step[i]=a[i];
}
}
Step::Step(const Step &c)
{
for(int i=0;i {
step[i]=c.step[i];
}
}
float Step::getAverage()
{
for(int i=0;i Averstep=(Averstep+step[i])/7;
return Averstep;
}
int Step::getMax()
{
int Maxstep=step[0];
for (int i=1;i {
if (step[i]>Maxstep) {
Maxstep=step[i];
}
}
return Maxstep;
}
int Step::getMin()
{
int Minstep=step[0];
for (int i=1;i<=6;i++)
if (step[i] Minstep=step[i];
}
return Minstep;
}
void Step::showAnswer()
{
cout }
float Step::Averstep=0.0;
int main()
{
int T;
int step[7];
cin>>T;
while(cin>>step[0]>>step[1]>>step[2]>>step[3]>>step[4]>>step[5]>>step[6])
{
Step x(step[7]); *****(错误位置)*****
x.showAnswer();
}
return 0;
}


c++

1个回答

step【7】是一个int数,而你的step是0-6的,它越界了
应该传过去一个数组,所以用
Step x(step);

代码里for循环都不完整 我这也调试不了
//*************************

1.实例化的时候只调用了构造函数,没有用他的方法,也就是没有计算最大最小值(可以在计算最大最小的函数里打个断点),我在构造函数里执行了计算的函数所以输出是正常的
2.输入的数据组数没用,这个简单,自己改吧

#include "stdio.h"
#include "iostream"

using namespace std;

class Step
{
public:
    Step(int a[7]);
    Step(const Step &c);
    ~Step(){}
    int getMax();
    int getMin();
    float getAverage();
    void showAnswer();
private:
    static float Averstep;
    int Maxstep, Minstep;
    int step[7];
};
Step::Step(int a[7])
{
    for (int i = 0; i<7; i++) 
    {
        step[i] = a[i];
    }
    Maxstep = getMax();
    Minstep = getMin();
    Averstep = getAverage();
}
Step::Step(const Step &c)
{
    for (int i = 0; i<7; i++)
    {
        step[i] = c.step[i];
    }
}
float Step::getAverage()
{
    for (int i = 0; i<7; i++)
        Averstep = (Averstep + step[i]) / 7;
    return Averstep;
}
int Step::getMax()
{
    int Maxstep = step[0];
    for (int i = 0; i<7; i++)
    {
        if (step[i]>Maxstep) 
        {
            Maxstep = step[i];
        }
    }
    return Maxstep;
}
int Step::getMin()
{
    int Minstep = step[0];
    for (int i = 1; i <= 6; i++)
    {
        if (step[i] < Minstep)
            Minstep = step[i];
    }
return Minstep;
}
void Step::showAnswer()
{
    cout << "max" << Maxstep << endl;
    cout << "min" << Minstep << endl;
    cout << "ave" << Averstep << endl;
}


float Step::Averstep = 0.0;
int main()
{
    int T;
    int step[7];
    cin >> T;
    while (cin >> step[0] >> step[1] >> step[2] >> step[3] >> step[4] >> step[5] >> step[6])
    {
        Step x(step); 

        x.showAnswer();
    }
    system("pause");
    return 0;
}

图片说明

qq_31762199
豆丷 回复Josie0625: 之前不是cin了个T么,用个for循环,输入多组for(int i=0;i<T;i++) cin>>.....
大约一年之前 回复
Josie0625
Josie0625 这个需要多组输入输出的应该怎么修改啊
大约一年之前 回复
Josie0625
Josie0625 回复豆丷: Step::Step(int a[7]) { for(int i=0;i<7;i++) { step[i]=a[i]; } } Step::Step(const Step &c) { for(int i=0;i<7;i++) { step[i]=c.step[i]; } } 不好意思我写的是这样的 复制代码的时候没有粘贴好
大约一年之前 回复
qq_31762199
豆丷 回复Josie0625: Step::Step(int a[7]) { for(int i=0;i { step[i]=a[i]; } } Step::Step(const Step &c) { for(int i=0;i { step[i]=c.step[i]; } } 这里的for循环格式都不会 大括号也对不上
大约一年之前 回复
Josie0625
Josie0625 你好 step的问题我已经修改了 能不能帮助看看for循环哪里不完整 需要怎么改?非常感谢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐