回 帖 发 新 帖 刷新版面

主题:[原创]帮帮小弟吧!输出有问题啊

用Visual C++编写
#include<iostream.h>                                                              
#include<stdlib.h> 
template<class T>                                                                                              
class array                                                                                                                                                              
{  
    private:
         T *data;   
    public:
      array(int n);
      int getsize()
      {
          return  n;
      }                                                                                 
      int length;
      int n;
      T get(int i);
      void set(int x,T newe);
      void input(int x,T e);
      T Delete(T e);
      void add(T newe);
      T max(); 
      T min();
      void sort();
      ~array();
};
template<class T>
array<T>::array(int n) 
{
    length=0;      
    n=0;
    data=(T*)new T[n*sizeof(T)];
    length=n; 

template<class T>
array<T>::~array()
{
    delete[] (T*)data;
}
template<class T>
T array<T>::get(int i)                //访问数组元素
{
    return data[i];
}
template<class T>
void array<T>::set(int x,T newe)      //为数组元素赋值
{
    data[x]=newe;
}
template<class T>
void array<T>::add(T newe)
{
    data[n]=newe;
    n++;
}
template<class T>
void array<T>::input(int x,T e) 
{
    data=new T(length+1); 
    for(int i=length;i<length-x;i--) 
    data[i]=data[i-1]; 
    data[x]=e; 
    length++; 

template<class T>
T array<T>::Delete(T e)  
{
    int number=0;
    int i=n-1;
    do
    {
        if(data[i]==e)
        {
           for(int j=i;j<n-1;j++)
           data[j]=data[j+1];
           number++;
           n--;
        }
    }
    while(i--); 
    return number;
}
template<class T>
T array<T>::max() 
{
    T temp; 
    temp=data[0]; 
     for(int i=1;i<length;i++) 
        if(temp<data[i]) 
          temp=data[i]; 
          return temp; 

template<class T>
T array<T>::min() 
{
    T temp; 
    temp=data[0]; 
     for(int i=1;i<length;i++) 
         if(temp>data[i]) 
           temp=data[i]; 
           return temp; 

template<class T>
void array<T>::sort()                   //使用冒泡排序 
{
    for(int i=length-1;i>=0;i--) 
        for(int j=1;j<i;j++) 
            if(data[j-1]>data[j])
            { 
               T temp=data[j-1]; 
               data[j-1]=data[j]; 
               data[j]=temp;
               return;
            } 

void main()
{
    array<int> a(10);
    int x=0,n=0,i=0;
    int number=0,e=0;
    int length=0;
    cout<<"输入5个数据\n";
    for(i=0;i<5;i++)
    {
        cin>>e;
    }
    cout<<"请输入插入位置:\n";
    cin>>x;
    cout<<"请输入插入的元素值: \n";
    cin>>e;
    cout<<"插入后数组为: \n";
    a.input(x,e);
    for(i=0;i<6;i++)
        cout<<"a["<<i<<"]="<<a.get(i);
    cout<<endl;
    cout<<"请输入需删除的元素值: \n";
        cin>>e;
        cout<<"删除后数组为:\n";
    for(i=0;i<5;i++)
        cout<<"a["<<i<<"]="<<a.get(i);
    cout<<endl;
    cout<<"最大值为: \n";
    a.max();
        cout<<a.get(i)<<endl;
    cout<<"最小值为:\n";
    a.min();
        cout<<a.get(x)<<endl;
    cout<<"排序结果为: \n";
    a.sort();
    for(i=0;i<5;i++)
        cout<<a.get(i)<<endl;
}

回复列表 (共2个回复)

沙发

错误很多
首先你输入5个数,你存在哪了,你根本没对你创建的对象a进行操作
再则你想用数组实现动态增长,我觉得不行,你的插入函数有问题!
其余的没看了,你自己想想吧,用链表实现动态增长比较好吧

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册