猫史档案馆


C++输入符重载,输入数组

用户:留梦灵溪留梦灵溪查看:2 回复:8 评论:2 创建时间:2023-03-30T08:34:23


提问一下,我这下面哪块出错了,为什么代码运行输入两行后会强制中断

center_image


回复

上一页1 页 / 共 1下一页
留梦灵溪留梦灵溪

多半还是指针的问题吧

点赞0


评论


wycfgqykqlyywycfgqykqlyy

#include<iostream>
#include<iomanip>
using namespace std;
double s;
int n;
int main() {
cin>>n;
cout<<fixed<<setprecision(1);
if(n>=30) {
cout<<n*1.0;
} else {
if(n<=29 && n>=20) {
cout<<n*1.2;
} else {
if(n<=19 && n>=10) {
cout<<n*1.5;
} else {
if(n<10) {
cout<<n*1.8;
}
}
}
}
return 0;
}

 

点赞0


评论


留梦灵溪留梦灵溪

emotion_编程猫_搓头

点赞0


评论


留梦灵溪留梦灵溪

大概知道是什么回事了

点赞0


评论


留梦灵溪留梦灵溪

我这里出错其实不是重载函数的问题,而是没给输入的数组一个默认的长度,在原题里面我给类中的私有赋了两个值,一个是长度int len,另一个是指针int *p,要用指针构建数组的话就需要先判断原来数组是否存在,然后用先输入的len给p构建new 数组我大概是这么理解的

点赞0


评论


留梦灵溪留梦灵溪

附一下更改后的代码

istream& operator>>(istream & in,SortedArray& sa){
    in >>sa.len;
    if(sa.p){
        delete []sa.p;
    }
    if (sa.len>0)
    {
        sa.p=new int[sa.len];
    }
    else{
        sa.p=nullptr;
    }
    
    for (int i = 0; i < sa.len; i++)
    {
        in >>sa.p[i];
    }
    return in;   
};

点赞0


评论


揽弓揽弓

外面一看:不就一英文嘛!

进去一看:我//靠//,退了退了!

点赞0


评论


开朗的瞓叁开朗的瞓叁

必须嘲讽一波

点赞0


评论