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;
} 展开
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;
} 展开
2个回答
展开全部
把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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询