Anda di halaman 1dari 13

MODUL 8

Array C++

8.1 Pengantar
Array dalam C++ atau dalam bahasa pemrograman apa pun adalah kumpulan item data
serupa yang disimpan di lokasi memori yang berdekatan dan elemen dapat diakses secara
acak menggunakan indeks array. Array dapat digunakan untuk menyimpan koleksi tipe
data primitif seperti int, float, double, char, dan lain-lain dari tipe tertentu. Untuk
menambahkannya, sebuah array di C++ dapat menyimpan tipe data turunan seperti
struktur, pointer, dan lain-lain. Diberikan di bawah ini adalah representasi gambar dari
sebuah array.

A[i] 87 45 78 76 39 90 56 73 82
i 0 1 2 3 4 5 6 7 8

Keteranga:
1. A[i] : Array dengan indeks i
2. Panjang Array : 9
3. i : adalah indeks
4. Indeks awal : 0

8.2 Mengapa Perlu Array C++


Kita dapat menggunakan variabel normal (v1, v2, v3, ..) ketika kita memiliki sejumlah kecil
objek, tetapi jika kita ingin menyimpan sejumlah besar instance, menjadi sulit untuk
mengelolanya dengan variabel normal. Ide dari array adalah untuk mewakili banyak contoh
dalam satu variabel.

8.3 Deklarasi Array C++


Ada berbagai cara di mana kita dapat mendeklarasikan sebuah array. Itu dapat dilakukan
dengan menentukan jenis dan ukurannya, dengan menginisialisasi atau keduanya.
1. Deklarasi Array Dengan Ukuran Spesifik
int arr1[10];
2. Deklarasi Array Oleh Pengguna Dengan Ukuran Spesifik
int n = 10;

int arr2[n];

3. Deklarasi Array Dengan Inisialisasi Elemen

int arr[] ={2, 5, 7 ,8};


char a[] ={‘a’, ‘b’, ‘d’,’x’}

61
MODUL 8
Array C++

4. Deklarasi array dengan Ukuran dan Inisialisasi Elemen


int arr1[4] = {1, 2, 3, 4}
int arr2[6] = {6, 7, 8, 9}
8.4 Keuntungan Penggunaan Array C++
1. Akses acak elemen menggunakan indeks array.
2. Penggunaan lebih sedikit baris kode karena menciptakan satu larik dari banyak elemen.
3. Akses mudah ke semua elemen.
4. Traversal melalui array menjadi mudah menggunakan satu loop.
5. Penyortiran menjadi mudah karena dapat dilakukan dengan menulis lebih sedikit baris
kode.
8.5 Kerugian Penggunaa C++
Mengizinkan sejumlah elemen tetap untuk dimasukkan yang diputuskan pada saat
deklarasi. Tidak seperti daftar tertaut, array di C tidak dinamis.
Penyisipan dan penghapusan elemen bisa mahal karena elemen perlu dikelola sesuai
dengan alokasi memori baru.
8.6 Fakta Tentang Array C++
1. Akses Elemen Array
Elemen array diakses dengan menggunakan indeks integer. Indeks array dimulai
dengan 0 dan berlanjut hingga ukuran array dikurangi 1.
2. Nama Array
Nama array juga merupakan penunjuk ke elemen pertama array.
Contoh 8.1
Coding 8.1
#include <iostream>
using namespace std;
int main()
{
int arr[5];
arr[0] = 5;
arr[2] = -10;
arr[3 / 2] = 2; // Ini sama dengan arr[1] = 2
arr[3] = arr[0];

cout<<arr[0]<<” “<<arr[1]<<” “<<arr[2]<<” “<<arr[3]);


return 0;
}
Output
5 2 -10 5

62 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

3. Tidak Ada Indeks Di Luar Pengecekan


Tidak ada indeks di luar batas yang memeriksa di C++, misalnya, program berikut dapat
dikompilasi dengan baik tetapi dapat menghasilkan output yang tidak terduga saat
dijalankan.
Contoh 8.2
Coding 8.2
#include<iostream>
using namespace std;
int main()
{
int arr[2] = { 10, 20, 30, 40, 50 };;

return 0;
}
Output
error: too many initializers for 'int [2]'.
Program tidak akan dikompilasi dalam C++. Jika kita menyimpan program di atas
sebagai .cpp, program menghasilkan kesalahan kompiler(CE) “error: too many
initializers for ‘int [2]'”.
4. Elemen disimpan di lokasi memori yang berdekatan

Contoh 8.3
Coding 8.3
#include<iostream>
using namespace std;
int main()
{
int arr[2] = { 10, 20, 30, 40, 50 };;

return 0;
}
Output
Ukuran integer adalah 4
Alamat arr[0] adalah 0x6ffdf0
Alamat arr[1] adalah 0x6ffdf4
Alamat arr[2] adalah 0x6ffdf8
Alamat arr[3] adalah 0x6ffdfc
Alamat arr[4] adalah 0x6ffe00

Ingat bahwa alamat array tersebut di atas dalam bentuk heksa desimal. Kemudian
alamat tersebut untuk setiap komputer mungkin saja berbeda atau bisa sama.

63
MODUL 8
Array C++

5. Cara lain untuk melintasi array


Contoh 8.4
Coding 8.4
#include<iostream>
using namespace std;
int main()
{
int arr[6]={11,12,13,14,15,16};
// Cara 1
for(int i=0;i<6;i++)
cout<<arr[i]<<" ";

cout<<endl;
// Cara 2
for(int i=0;i<6;i++)
cout<<i[arr]<<" ";

cout<<endl;

return 0;
}
Output
11 12 13 14 15 16
11 12 13 14 15 16

8.7 Multi Dimensi Array C++


Dalam C/C++, kita dapat mendefinisikan array multidimensi dengan kata-kata sederhana
sebagai array dari array. Data dalam array multidimensi disimpan dalam bentuk tabel
(dalam urutan baris-utama).
Bentuk umum dari mendeklarasikan array berdimensi-N:
data_type array_name[size1][size2]....[sizeN];
1. Array Dimensi Dua
int dua_d[10][20];
2. Array Dimensi 3
int tiga_d[10][20][30];

8.8 Ukuran Multi Dimensi Array C++


Jumlah total elemen yang dapat disimpan dalam array multidimensi dapat dihitung dengan
mengalikan ukuran semua dimensi.
Array int x[10][20] dapat menyimpan total (10*20) = 200 elemen.
Demikian pula array int x[5][10][20] dapat menyimpan total (5*10*20) = 1000 elemen.

64 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

8.9 Dua Dimensi Array


Array dua dimensi adalah bentuk paling sederhana dari array multidimensi. Kita dapat
melihat array dua dimensi sebagai array dari array satu dimensi untuk memudahkan
pemahaman.
1. Bentuk dasar mendeklarasikan array dua dimensi berukuran x,y:
data_type array_name[x][y];
2. Kita dapat mendeklarasikan array integer dua dimensi, katakan 'x' dengan ukuran 10,20
sebagai:
int x[10][20];
3. Elemen dalam array dua dimensi biasanya disebut dengan x[i][j] dimana i adalah nomor
baris dan 'j' adalah nomor kolom.
4. Array dua dimensi dapat dilihat sebagai tabel dengan baris 'x' dan kolom 'y' di mana
nomor baris berkisar dari 0 hingga (x-1) dan nomor kolom berkisar dari 0 hingga (y-1).
Array dua dimensi 'x' dengan 3 baris dan 3 kolom ditunjukkan di bawah ini:
Kolom 0 Kolom 1 Kolom 2
Baris 0 x[0][0] x[0][1] x[0][2]
Baris 1 x[1][0] x[1][1] x[1][2]
Baris 2 x[2][0] x[2][1] x[2][3]
Baris 3 x[3][0] x[3][1] x[3][2]

5. Inisialisasi Array Dua Dimensi: Ada dua cara di mana array Dua Dimensi dapat
diinisialisasi.
a. Cara Pertama
int x[3][4] = {0, 1 ,2 ,3 ,4 , 5 , 6 , 7 , 8 , 9 , 10 , 11}
Array di atas memiliki 3 baris dan 4 kolom. Elemen dalam kurung kurawal dari kiri
ke kanan disimpan dalam tabel juga dari kiri ke kanan. Elemen-elemen tersebut
akan diisi dalam array secara berurutan, 4 elemen pertama dari kiri di baris pertama,
4 elemen berikutnya di baris kedua, dan seterusnya.
b. Cara Kedua Lebih Baik
int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};
Jenis inisialisasi ini menggunakan kurung kurawal bersarang. Setiap set dalam
kurung kurawal mewakili satu baris. Dalam contoh di atas, ada total tiga baris
sehingga ada tiga set dalam kurung kurawal bagian dalam.

65
MODUL 8
Array C++

6. Mengakses Elemen Array Dua Dimensi: Elemen dalam array Dua Dimensi diakses
menggunakan indeks baris dan indeks kolom. Misalkan terdapat Array:
int x[2][1];
Contoh di atas mewakili elemen yang ada di baris ketiga dan kolom kedua.
Catatan:
Dalam array, jika ukuran array adalah N. Indeksnya akan dari 0 hingga N-1. Oleh
karena itu, untuk indeks baris 2 nomor baris adalah 2+1 = 3.
Untuk menampilkan semua elemen array Dua Dimensi, kita dapat menggunakan loop
for bersarang.
Contoh 8.5

Coding 8.5
#include<iostream>
using namespace std;
int main()
{
int x[3][2] = {{0,1},{2,3},{4,5}};

for (int i = 0; i < 3; i++)


{
for (int j = 0; j < 2; j++)
{
cout << "Elemen x[" << i
<< "][" << j << "]: ";
cout << x[i][j]<<endl;
}
}

return 0;
}
Output
Elemen x[0][0]: 0
Elemen x[0][1]: 1
Elemen x[1][0]: 2
Elemen x[1][1]: 3
Elemen x[2][0]: 4
Elemen x[2][1]: 5

8.10 Tiga Dimensi Array C++


Array tiga dimensi adalah bentuk array multidimensi yang banyak digunakan dalam
bentuk ruang. Kita dapat melihat array dua dimensi sebagai array dari array dari aray
satu dimensi untuk memudahkan pemahaman.

66 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

1. Bentuk dasar mendeklarasikan array tiga dimensi berukuran x,y,z:


data_type array_name[x][y][z];
2. Kita dapat mendeklarasikan array integer tiga dimensi, katakan 'x' dengan ukuran
10,20,30 sebagai:
int x[10][20][30];
3. Elemen dalam array tiga dimensi biasanya disebut dengan x[i][j][k] dimana i adalah
nomor baris dan 'j' adalah nomor kolom dan k adalah nomor ke dalaman.
4. Array tiga dimensi dapat dilihat sebagai ruang dengan baris 'x' ,kolom 'y' dan z sebagai
ke dalaman di mana nomor baris berkisar dari 0 hingga (x-1), nomor kolom berkisar
dari 0 hingga (y-1) dan nomor keedalaman sebagai (z-1). Array tiga dimensi 'x' dengan
5 baris, 5 kolom dan 5 kedalaman ditunjukkan di bawah ini:

5. Inisialisan Array Tiga Dimensi ada dua cara


a. Cara Pertama
x[2][3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23};
b. Cara Kedua Lebih Baik
x[2][3][4] = {
{{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}},
{{12, 13, 14, 15}, {16, 17, 18, 19}, {20, 21, 22, 23}}
};

67
MODUL 8
Array C++

6. Mengakses Elemen Array Tiga Dimensi:


Mengakses elemen dalam Array Tiga Dimensi juga mirip dengan Array Dua Dimensi.
Perbedaannya adalah kita harus menggunakan tiga loop daripada dua loop untuk satu
dimensi tambahan dalam Array Tiga Dimensi.
Elemen dalam array Tiga Dimensi diakses menggunakan indeks baris, indeks kolom
dan indeks kedalaman. Misalkan terdapat Array:
int x[2][1][4];
Contoh di atas mewakili elemen yang ada di baris ketiga, kolom kedua dan kedalaman
5.
Catatan:
Dalam array, jika ukuran array adalah N. Indeksnya akan dari 0 hingga N-1. Oleh
karena itu, untuk indeks baris 2 nomor baris adalah 2+1 = 3.
Untuk menampilkan semua elemen array Tiga Dimensi, kita dapat menggunakan loop
for bersarang.
Contoh 8.6
Coding 8.6
#include <iostream>
using namespace std;

int main()
{
int x[2][3][2] =
{
{ {0,1}, {2,3}, {4,5} },
{ {6,7}, {8,9}, {10,11} }
};

for (int i = 0; i < 2; ++i)


{
for (int j = 0; j < 3; ++j)
{
for (int k = 0; k < 2; ++k)
{
cout << "Element x[" << i << "][" << j
<< "][" << k << "] = " << x[i][j][k]
<< endl;
}
}
}
return 0;
}
Output
Elemen x[0][0][0]: 0

68 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

Elemen x[0][0][1]: 1
Elemen x[0][1][0]: 2
Elemen x[0][1][1]: 3
Elemen x[0][2][0]: 4
Elemen x[0][2][1]: 5
Elemen x[1][0][0]: 6
Elemen x[1][0][1]: 7
Elemen x[1][1][0]: 8
Elemen x[1][][1]: 9
Elemen x[1][2][0]: 10
Elemen x[1][2][1]: 11

8.11 Soal-Soal Latihan


1. Tuliaslah sebuah program yang dapat menjumlahkan semua isi aryay dengan input
sebuah integer n yang merupakan panjang array dengan sebuah keluaran integer.
Input baris pertama adalah panjang array. Kemudian baris kedua sampai dengan n
adalah nilai array. Baris ketiga adalah ouput.
Input Input
4 9
3 8
8 2
7 7
5 3
9
6
4
7
6
Output Output
23 52

2. Tulislah sebuah program yang dapat menghitung jumlah nilai array sampai dengan
satuan terkecil.
Input Input
4 9
3 8
8 2
7 7
5 3
9
6
4
8
9
Output Output
5 2

69
MODUL 8
Array C++

3. Tulislah sebuah program yang dapat menentukan nilai array terbesar di dalam array
yang diketahui.
Input Input
4 7
3 8
8 2
7 7
5 3
9
6
4
Output Output
8 9

4. Tulislah sebuah program yang dapat menentukan nilai array terkecil di dalam array
yang diketahui.
Input Input
4 7
3 8
8 2
7 7
5 3
9
6
4
Output Output
3 2

5. Tulislah sebuah program yang dapat menentukan nilai terbesar dan terkecil dalam
suatu array yang nilainya diketahui. Kemudian program juga dapat menebak indeks
nilai array terbesar dan terkecil tersebut.
Input Input
4 7
3 8
8 7
7 3
5 9
6
2
4
Output Output
3 2
Indeks 0 Indeks 5

6. Perhatikan coiding program berikut:

70 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

#include<iostream>
using namespace std;
int main(){
int A[] = {1, 2, 3, 4, 5};
int i,j,t;
for (i=0;i<5;i++){
for (j=0;j<=i;j++){
t = A[i] xor A[j];
A[i] = t xor A[i];
A[j] = t xor A[i];
}
}
for (i = 0;i < 5;i++){
if (i != 0)
cout<<" ";
cout<<A[i];
}
cout<<endl;
}
Apa hasil dari program tersebut?
A. 2 5 4 3 1
B. 5 4 3 2 1
C. 3 1 4 2 5
D. 2 1 3 5 4
E. 1 4 2 5 3

7. Perhatikan koding berikut:


#include<iostream>
using namespace std;
int main(){
int i;
int a[5],x[5];
for(i=1;i<=5;i++){
x[i]=10 / i;
}
for(i=5;i>=1;i--){
x[5]=x[5]+x[i];
}

cout<<x[5];
}
Apa hasil dari program tersebut?
A. 24
B. 23
C. 25
D. 22
E. 21

71
MODUL 8
Array C++

8. Perhatikan koding berikut:


#include<iostream>
using namespace std;
int x[]={1,-1,1,-1,1,-1,1};
int Max(int a, int b){
if(a>b){
return a;
}else{
return b;
}
}
int main(){
int ts = 0;
int ms = 0;
for (int i=1; i<=7;i++){
ts = Max(ms-ts, x[i] + ts);
ms = Max(ts+ms, 0);
}
cout<<ms;
}
Apa hasil dari program di atas?
A. -5
B. 21
C. 13
D. 5
E. 8

9. Perhatikan koding berikut:


#include<iostream>
using namespace std;
int x[]={1,-1,1,-1,1,-1,1,-1,1};
int Max(int a, int b){
if(a>b){
return a;
}else{
return b;
}
}
int main(){
int ts = 0;
int ms = 0;
for (int i=1; i<=9;i++){
ts = Max(ms-ts, x[i] + ts);
ms = Max(ts+ms, 0);
}
cout<<ms;

72 Zaiful Bahri,S.Si.,M.Kom
MODUL 8
Array C++

}
Apa hasil dari program di atas?
A. -5
B. 21
C. 13
D. 5
E. 8

10. Perhatikan koding berikut:


#include<iostream>
using namespace std;
int x[] = {43,99,1,56,12,89,5,13,76,20};

int main(){
int ms = 0;

for (int i=0; i<=9;i++){


if((x[i] % 2) == 1){
ms += x[i];
}
}
cout<<ms;
}
Apa hasil dari program di atas?
A. 250
B. 210
C. 130
D. 500
E. 80

73

Anda mungkin juga menyukai