c++的问题,如何实现以下程序的动态数组呢?

#include<iostream>usingnamespacestd;#defineARRAY_SIZE4classIntArray{intdata[ARRAY_SIZ... #include<iostream>
using namespace std;
#define ARRAY_SIZE 4
class IntArray{
int data[ARRAY_SIZE];
int getVal(int condition);
public:
int getSize();
int setVal(int pos,int val);
int getMaxVal();
int getMinVal();
};
int IntArray::getSize()
{
return ARRAY_SIZE;
}
int IntArray::setVal(int pos,int val){
if((pos<0)||(pos>=ARRAY_SIZE))
return -1;
data[pos]=val;
return 0;
}
int IntArray::getVal(int condition){
int temp=data[0];
for(int i=1;i<ARRAY_SIZE;i++){
if(condition==0){
if(data[i]>temp)
temp=data[i];
}else{
if(data[i]<temp)
temp=data[i];
}
}
return temp;
}
int IntArray::getMaxVal(){
int temp=getVal(0);
return temp;
}
int IntArray::getMinVal(){
int temp=getVal(1);
return temp;
}

int main(){
IntArray array;
int i,size,v,max,min;
size=array.getSize();
cout<<"please input "<<size<<" numbers:"<<endl;
for(i=0;i<size;i++){
cin>>v;
array.setVal(i,v);
}
max=array.getMaxVal();
min=array.getMinVal();
cout<<"max value is : "<<max<<endl;
cout<<"min value is : "<<min<<endl;
return 0;
}
展开
 我来答
对床话雨
推荐于2016-09-09 · TA获得超过1636个赞
知道小有建树答主
回答量:171
采纳率:100%
帮助的人:153万
展开全部

把int data[ARRAY_SIZE]改成vector<int> data;其他相应调整一下,就可以动态添加数据了。

试着把你的代码改动如下,你运行试试,没问题请采纳,谢谢:

#include <iostream>
#include <vector>
using namespace std;

class IntArray{
vector<int> data;

int getVal(int condition);
public:
int getSize();
void addVal(int val);
int setVal(int pos,int val);
int getMaxVal();
int getMinVal();
};

int IntArray::getSize()
{
return data.size();
}

void IntArray::addVal(int val){
data.push_back(val);
}

int IntArray::setVal(int pos,int val){
if((pos<0)||(pos>=data.size()))
return -1;
data[pos]=val;
return 0;
}
int IntArray::getVal(int condition){
        if(0 == data.size())
            return -1;
int temp=data[0]; 
for(int i=1;i<data.size();i++){
if(condition==0){
if(data[i]>temp)
temp=data[i];
}else{
if(data[i]<temp)
temp=data[i];
}
}
return temp;
}
int IntArray::getMaxVal(){
int temp=getVal(0);
return temp;
}
int IntArray::getMinVal(){
int temp=getVal(1);
return temp;
}

int main(){
IntArray array;
int i,size,v,max,min;
size=5;
cout<<"please input "<<size<<" numbers:"<<endl; 
for(i=0;i<size;i++){
cin>>v;
array.addVal(v);
}
size = array.getSize();
cout << "size = "<<size<<endl;
cout << "setVal(2, 8)!"<<endl;
array.setVal(2,8);
max=array.getMaxVal();
min=array.getMinVal();
cout<<"max value is : "<<max<<endl;
cout<<"min value is : "<<min<<endl;
return 0;
}
更多追问追答
追问
我想实现的是 size的值是任意的,并未限定的,可是这里 size还是只能为5啊
追答
size的值是不固定的,你看错了,这是我为了测试,限制循环输入的次数,你改成6也行,改成7也,要不加个while,把条件设成如果输入了-1就退出,只要不输入-1,就可以随意加多少项都行。
匿名用户
2014-05-04
展开全部
像这样实现
#include<iostream>
using namespace std;
class IntArray{
int* data;
int getVal(int condition);
int m_nSize;
public:
IntArray(int nSize)
{
if (nSize > 0)
{
data = new int[nSize];
m_nSize = nSize;
}
else
{
data = NULL;
m_nSize = 0;
}
}
~IntArray()
{
if (data)
{
delete[] data;
}
}
int getSize();
int setVal(int pos,int val);
int getMaxVal();
int getMinVal();
};
int IntArray::getSize()
{
return m_nSize;
}
int IntArray::setVal(int pos,int val){
if((pos<0)||(pos>=m_nSize))
return -1;
data[pos]=val;
return 0;
}
int IntArray::getVal(int condition){
int temp=data[0];
for(int i=1;i<m_nSize;i++){
if(condition==0){
if(data[i]>temp)
temp=data[i];
}else{
if(data[i]<temp)
temp=data[i];
}
}
return temp;
}
int IntArray::getMaxVal(){
int temp=getVal(0);
return temp;
}
int IntArray::getMinVal(){
int temp=getVal(1);
return temp;
}

int main(){
IntArray array(10);
int i,size,v,max,min;
size=array.getSize();
cout<<"please input "<<size<<" numbers:"<<endl;
for(i=0;i<size;i++){
cin>>v;
array.setVal(i,v);
}
max=array.getMaxVal();
min=array.getMinVal();
cout<<"max value is : "<<max<<endl;
cout<<"min value is : "<<min<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式