注册 登录
编程论坛 C++教室

编译通不过,该如何修改?

glglzb 发布于 2012-06-09 21:17, 513 次点击
1001. 可排序数组   
 总提交数量:  579 通过数量: 124
  
      

   
 时间限制:1秒    内存限制:256兆 题目描述
可排序数组 SortableArray定义如下:

1. 可通过成员函数pushBack插入一个元素

2.可通过成员函数sort对数组进行升序排序

3.可通过成员函printArray数输出数组

4.可排序数组SortableArray是一个模板类

5.SortableArray的实例:SortableArray<int> array( maxArraySize ) ;

(请实现SortableArray,注意在提交的代码中请不要包含 main()函数 )

输入格式
测试框架如下:

int maxSize = 10 ;

SortableArray< int > arr( maxSize ) ;

arr.pushBack( 45 ) ;

arr.pushBack( 32 ) ;

arr.pushBack( 41 ) ;

arr.printArray() ;

arr.sort() ;

arr.printfArray() ;

输出格式
45 32 41

32 41 45

 
我的代码是这样的,希望大家指正?
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
template <typename T>
class SortableArray
{
public:
    SortableArray(int a)
    {
        maxSize= a;
    }
    void pushBack(T a)
    {
        m[i]=a;
        i=i+1;
    }
    void printArray()
    {int j;
        for(j=0;j<maxSize;j++)
        {
            
            cout<<m[j]<<" ";
        
        }
        cout<<endl<<endl;
        
    }
    void sort ()
    {
        int p,q;
        for(p=1;p<maxSize;p++)
        {
            for(q=0;q<maxSize-1;q++)
            {
                T temp;
                if(m[q]>m[q+1])
                {
                    temp=m[q];
                    m[q]=m[q+1];
                    m[q+1]=temp;
                }
            }
        }
    }
    int maxSize;
    static int i;
    T m[10000];
};
template<>
int SortableArray<int>::i=0;
int main()
{
    int maxSize = 10 ;
    SortableArray< int > arr( maxSize ) ;
    arr.pushBack( 45 ) ;
    arr.pushBack( 32 ) ;
    arr.pushBack( 41 ) ;
    arr.printArray() ;
    arr.sort() ;
    arr.printArray() ;
    return 0;
}
2 回复
#2
glglzb2012-06-10 13:50
大家帮忙修改一下,谢谢
#3
lz10919149992012-06-10 16:39
程序代码:
#include <iostream>
#include <list>

template<typename T>
class SortableArray {
public:
    void pushBack(const T& data) { array.push_back(data); }
    void sort() { array.sort(); }
    SortableArray(int) {};
    ~SortableArray() { array.clear(); }
    void printArray() const;
private:
    std::list<T> array;
};

template<typename T>
void SortableArray<T>::printArray() const
{
    typename std::list<T>::const_iterator iter = array.begin();
    std::cout << *iter++;
    while (iter != array.end())
        std::cout << " " << *iter++;
    std::cout << std::endl;
}
1