cài đặt một mảng động một chiều

#include "stdafx.h"
#include "iostream"

using namespace std;

template <class T>
class Array{
protected:
	T *data;	// con tro tro vao phan tu dau tien cua mang
	int size;	// kich thuoc mang
public:
	Array():data(NULL), size(0){}
	Array(int length): data(new T[size = length]){}	// ham tao Array voi leng phan tu
	Array(const Array &a): data(new T[size = a.size]){
		CopyFrom(a.data);
	}
	~Array(){
		if(data)	{delete[]data;}
	}
public:
	void CopyFrom(T *value){
		for(register int i = 0; i < size; i++){
			data[i] = value[i];
		}
	} // ham copy data tu mang dau vao
	int Size(){return size;}	// ham lay kich thuoc cua Array
public:
	T & operator[](int index){return data[index];}
	Array& operator=(const Array& a){
		delete[]data;
		data = new T [size = a.data];
		CopyFrom(a.data);
		return *this;
	}
};

class IntArray : public Array<int> {
    int isSorted;
public:
    IntArray(int *v, int n) {
		Array<int>(n);
        for(int i = 0; i < n; i++) {
           data[i] = v[i];
        }
        isSorted = 0;
    }
public:
    void Sort() {
        int minIndex, tmp;
        for (int i=0; i<size-1; i++) {
            minIndex = i;
            for (int j = i+1; j<size; j++) {
                if (data[j] < data[minIndex]) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                tmp = data[i];
                data[i] = data[minIndex];
                data[minIndex] = tmp;
            }
        }
        isSorted = 1;
    }
    int Sum() {
        int result = 0;
        for(int i=0; i<size; i++) {
            result += data[i];
        }
        return result;
    }
    int Search(int value) {
        Sort();
        int left=0, right=size-1;
        int middle;
         do {
            middle=(left+right)/2;
            if (value == data[middle]) break;
            else if (value<data[ middle ]) {
                right=middle-1;
            }
            else left=middle+1;
         } while (left<=right);
         if (left<=right) return middle;
         return -1;
	}
//class IntArray : public Array<int>{
//	int isSorted;	// co xac dinh mang da sap xep hay chua
//public:
//	IntArray(int *v, int n); // ham tao tu mang int co n phan tu
//	void Sort(); // ham sap xep theo thuat toan chen
//	int Sum();	//ham tinh tong cac phan tu cua mang
//	int Search(int value);	//ham tim vi tri cua value trong mang bang thuat toan chia doi
	    float Average() {
        return (float)Sum()/size;
    }
};

template <class T>


int main()
{
	int A[] = {4, 2, 3, 1};
	IntArray arr(A, 4);

	cout << arr.Sum() << '	' << arr.Average() << endl; //10 2.5
	cout << (arr.Search(5) >=0? "C": "khong C") << "0 gia tri 5 trong mang." << endl;
	cout << (arr.Search(3) >=0? "C": "khong C")	<< "0 gia tri 3 trong mang." << endl;
	system("pause");
}

lỗi gì ạ?
=== 20 ===

1 Like

Và code này làm gì nữa? Muốn mọi người giúp thì phải đặt cái tiêu đề rõ ràng là mình đang làm cái gì. Đừng hỏi thế này.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?