S.data di milis-uad

Pada praktikum struktur data pertemuan akan membahas tentang ARRAY DINMAIS,tapi sebelum menulis kode utama pada header xcept.h
Berikut source code dari file header xcept.h

01    #ifndef __xcept
02    #define __xcept
03
04    // exception classes for various error types
05
06    // bad initializers
07
08    class BadInitializers {
09
10    public:
11
12    BadInitializers() {}
13
14    };
15
16    // insufficient memory
17
18    class NoMem {
19
20    public:
21
22    NoMem() {}
23
24    };
25
26    // change new to throw NoMem instead of xalloc
27
28    void my_new_handler()
29
30    {
31
32    throw NoMem();
33
34    };
35
36    //new_handler Old_Handler_ = set_new_handler(my_new_handler);
37
38    // improper array, find, insert, or delete index
39
40    // or deletion from empty structure
41
42    class OutOfBounds {
43
44    public:
45
46    OutOfBounds() {}
47
48    };
49
50    // use when operands should have matching size
51
52    class SizeMismatch {
53
54    public:
55
56    SizeMismatch() {}
57
58    };
59
60    // use when zero was expected
61
62    class MustBeZero {
63
64    public:
65
66    MustBeZero() {}
67
68    };
69
70    // use when zero was expected
71
72    class BadInput {
73
74    public:
75
76    BadInput() {}
77
78    };
79    #endif

Lalu buat class array1D.h
seperti berikut ini:

01    </pre>
02    class Array1D{
03     friend ostream& operator<<(ostream&, const Array1D&);
04     public:
05     Array1D(int size=0);
06     Array1D(const Array1D& v);
07     ~Array1D(){delete [] element;}
08     int& operator[](int i)const;
09     int Size(){return size;}
10     Array1D& operator=(const Array1D& v);
11     Array1D operator+()const;
12     Array1D operator+(const Array1D& v)const;
13     Array1D operator-()const;
14     Array1D operator-(const Array1D& v)const;
15     Array1D operator*(const Array1D& v)const;
16     Array1D& operator+=(const int& x);
17     Array1D& Resize(int sz);
18     private:
19     int size;
20     int* element;
21    };
22    Array1D::Array1D(int sz){
23     if(sz<0)throw BadInitializers();
24     size=sz;
25     element=new int[sz];
26    }
27    Array1D::Array1D(const Array1D& v){
28     size=v.size;
29     element=new int[size];
30     for(int i=0; i<size; i++)
31     element[i]=element[i];
32    }
33    int& Array1D::operator[](int i)const{
34     if(i<0||i>=size)throw OutOfBounds();
35     return element[i];
36    }
37    Array1D& Array1D::operator=(const Array1D& v){
38     if(this !=&v){
39     size=v.size;
40     delete[]element;
41     element=new int[size];
42     for(int i=0;i<size;i++)
43     element[i]=element[i];
44     }
45     return* this;
46    }
47    Array1D Array1D::operator+(const Array1D& v)const{
48     if (size != v.size) throw SizeMismatch();
49     Array1D w(size);
50     for(int i=0; i<size; i++)
51     w.element[i]=element[i]+v.element[i];
52     return w;
53    }
54    Array1D Array1D::operator-(const Array1D& v)const{
55     if(size != v.size) throw SizeMismatch();
56     Array1D w(size);
57     for(int i=0; i<size; i++)
58     w.element[i]=element[i]-v.element[i];
59     return w;
60    }
61     Array1D Array1D::operator-()const{
62     Array1D w(size);
63     for(int i=0; i<size; i++)
64     w.element[i]=-element[i];
65     return w;
66    }
67    Array1D Array1D::operator*(const Array1D& v)const{
68     if(size != v.size) throw SizeMismatch();
69     Array1D w(size);
70     for(int i=0; i<size; i++)
71     w.element[i]=element[i]=v.element[i];
72     return w;
73    }
74    Array1D& Array1D::operator+=(const int& x){
75     for(int i=0; i<size;i++)
76     element[i]+=x;
77     return* this;
78    }
79    ostream& operator<<(ostream& out, const Array1D& x){
80     for(int i=0; i<x.size; i++)
81     out << x.element[i] << ” “;
82     return out;
83    }
84    Array1D& Array1D::Resize(int sz){
85     if(sz<0) throw BadInitializers();
86     delete[]element;
87     size=sz;
88     element=new int[size];
89     return* this;
90    }

Setelah itu,fungsi main nya:

01    </pre>
02    int main(int argc, char *argv[])
03    {
04    try{
05    Array1D X(10), Y, Z;
06    for(int i=0; i<10; i++)
07    X[i]=i;
08    cout << “X[3] = ” << X[3] << endl;
09    cout << “X is ” << X << endl;
10    Y=X;
11    cout << “Y is ” << Y << endl;
12    X += 2;
13    cout << “X increment by 2 is ” << X << endl;
14    Z=(Y+X)*Y;
15    cout << “(Y+X)*Y is ” << Z << endl;
16    cout << “-(Y+X)*Y is ” << -Z << endl;
17    }
18    catch(…){
19    cerr << “An Exception has occured” << endl;}
20
21    system(“PAUSE”);
22    return EXIT_SUCCESS;
23    }