30/09/2018, 17:13

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");
}
Sáng Béo viết 19:14 ngày 30/09/2018

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

Mai Anh Dũng viết 19:18 ngày 30/09/2018

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.

Bài liên quan
0