Array himpunan Suhu UdaraStruktur Data 

Himpunan Suhu Udara dengan array 1D dan 2D serta macam-macam operator

Seperti yang sudah dibahas dimateri sebelumnya. Array (larik) ialah sekumpulan variabel-variabel yang memiliki nama dan tipe data yang sama satu dengan lainnya. Juga bisa diartikan sebagai sekelompok data sejenis yang tersimpan di dalam variabel dengan nama sama. maka dari itu Untuk dapat membedakan antara array satu dengan lainnya dapat dengan memberikan indeks pada masing-masing variable tersebut.

Menentukan Himpunan Suhu Udara Dengan Array 1D dan 2D

Untuk dapat memahami penggunaan araay 1D dan 2D secara jelas, berikut ini merupakan contoh kasus secara lengkap untuk pemanfaatan array tersebut :

Contoh Himpunan Suhu

⊕ Himpunan suhu udara pada suatu minggu :

suhu = { (ahad, 28), (senin, 30), (selasa, 31), (rabu,27), (kamis, 25), (jum’at, 26), (sabtu, 29)

⊕ Indeks : nama hari, harga : suhu pada hari indeks

⊕ Nama array : suhu

⊕ Mengubah data :

– simpan(selasa, 29)

⊕ Menampilkan data

tampilkan(jum’at)

⊕ Alternatif data pada array : ⇒ bilangan indeks menggantikan nama hari

suhu = { (0, 28), (1, 30), (2, 31), (3,27), (4, 25), (5, 26), (6, 29) }

1. Penggunaan Array

⊕ Terdapat dukungan struktur data array, sebagai contoh deklarasi :

int A[9]

⊕  Mengakses elemen array pada indeks -3, 9 atau 90 dengan A[-3], A[9], A[90] merupakan indeks yang tidak sah walaupun diperbolehkan, dikarenakan dapat menimbulkan nilai yang tidak dapat diperkirakan dan menyulitkan proses debugging.

⊕  Untuk menampilkan setiap data yang disimpan dalam array tidak dapat dilakukan dengan perintah :

cout << A << endl;

⊕ Tidak dapat melakukan operasi seperti : +, – atau yang lain

2. Class Array 1D

template<class T>
class Array1D {
friend ostream& operator<< (ostream&, const Array1D<T>&);
public:

Array1D(int size = 0);
Array1D(const Array1D<T>& v); // copy constructor
~Array1D() {delete [] element;}
T& operator[](int i) const;
int Size() {return size;}
Array1D<T>& operator=(const Array1D<T>& v);
Array1D<T> operator+() const; // unary +
Array1D<T> operator+(const Array1D<T>& v) const;
Array1D<T> operator-() const; // unary minus
Array1D<T> operator-(const Array1D<T>& v) const;
Array1D<T> operator*(const Array1D<T>& v) const;
Array1D<T>& operator+=(const T& x);
Array1D<T>& ReSize(int sz);

private:
int size;
T *element; // 1D array
};

Konstruktor Array 1D

template<class T>
Array1D<T>::Array1D(int sz)
{

if (sz < 0) throw BadInitializers();
size = sz;
element = new T[sz];

}

Penggunaan :

⊕ Array1D <int> X(10);

⊕ sz = 10, sehingga data member size berukuran 10

⊕ Operator new digunakan untuk memesan memori secara dinamis dengan tipe T = int. bagaimana dengan :

Array1D<int> Y;

Copy Contructor Array 1D

template<class T>
Array1D<T>::Array1D(const Array1D<T>& v) {

size = v.size;
element = new T[size]; // get space
for (int i = 0; i < size; i++) // copy elements
element[i] = v.element[i];

}

Penggunaan :

Array1D<int> X(10);

for (int i=0; i < 10; i++)
X[i] = i;
Array1D<int> Y = X;

Cara kerja :

Operator [ ] : me-return elemen ke-i.

template<class T>
T& Array1D<T>::operator[](int i) const
{

if (i < 0 || i >= size) throw OutOfBounds();
return element[i];

}

Penggunaan :

cout << X[5];

Cara kerja :

Overload assignment operator =.

template<class T>
Array1D<T>& Array1D<T>::operator=(const Array1D<T>& v) {

if (this != &v) { // tidak dapat meng-assgin dengan diri sendiri
size = v.size;
delete [] element; // elemen sebelumnya dihapus
element = new T[size]; // memori disamakan
for (int i = 0; i < size; i++) // kopi element demi elemen
element[i] = v.element[i];

}

return *this;

}

Penggunaan :

Array1D<int> X(10), Y;

Y = X;

Cara kerja :

– Ukuran array Y disamakan dengan ukuran array X

– Proses assignment dilakukan dengan cara mengkopi elemen demi elemen array, yaitu elemen objek v (mewakili X) ke elemen objek this (mewakili Y).

Operator biner +

template<class T>
Array1D<T> Array1D<T>::operator+(const Array1D<T>& v) const {

if (size != v.size) throw SizeMismatch(); // syarat : ukuran harus sama
Array1D<T> w(size); // w adalah array hasil
for (int i = 0; i < size; i++)
w.element[i] = element[i] + v.element[i];
return w;

}

Penggunaan
Z = X + Y;

Cara kerja

– Mirip juga untuk operator biner – dan *
– X terwakili dengan objek this (berarti dapat mengakses method tanpa didahului dengan objek, Y terwakili dengan objek V.
– Z terwakili dengan objek W.

Operator unari –

template<class T>
Array1D<T> Array1D<T>::operator-() const
{

// create result array w
Array1D<T> w(size);
for (int i = 0; i < size; i++)
w.element[i] = -element[i];

return w;
}

Cara kerja :

kebalikan dengan operator +

Operator += (menambah x pada setiap elemen (*this)).

template<class T>
Array1D<T>& Array1D<T>::operator+=(const T& x) {

for (int i = 0; i < size; i++)
element[i] += x;
return *this;

}

Penggunaan
X += 2;

Cara kerja
element[i] milik objek this mewakili objek X.

3. Class Array 2D

template<class T>
class Array2D {
friend ostream& operator<< (ostream&, const Array2D<T>&);
public:

Array2D(int r = 0, int c = 0);
Array2D(const Array2D<T>& m); // copy constructor
~Array2D() {delete [] row;}
int Rows() const {return rows;}
int Columns() const {return cols;}
Array1D<T>& operator[](int i) const;
Array2D<T>& operator=(const Array2D<T>& m);
Array2D<T> operator+() const; // unary +
Array2D<T> operator+(const Array2D<T>& m) const;
Array2D<T> operator-() const; // unary minus
Array2D<T> operator-(const Array2D<T>& m) const;
Array2D<T> operator*(const Array2D<T>& m) const;
Array2D<T>& operator+=(const T& x);

private:

int rows, cols; // array dimensions
Array1D<T> *row; // array of 1D arrays

};

tabel suhu array 2 dimensi

Demikian artikel terkait materi kuliah yang berjudul “Himpunan Suhu Udara dengan array 1D dan 2D serta macam-macam operator”. Untuk dapat mendapatkan materi seputar array 1D dan 2D secara lengkap, dapat di download di link berikut ini MatKul struktur data.  Semoga bermanfaat

Related posts

Leave a Comment