ARRAY
Soal & Penyelesaian
1.
Demonstrasikanlah penggunaan sebuah array integer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//arrayInteger.cpp
#include <iostream>
#include <conio.h>
int main()
{
int
arrayKu[5]; // Array memuat 5 integer
int
i;
for
( i=0; i<5; i++) // 0-4
{
std::cout << "Nilai untuk arrayKu[" << i
<< "]: ";
std::cin >> arrayKu[i];
}
for
(i = 0; i<5; i++)
std::cout << i << ":
" << arrayKu[i] << std::endl;
getch();
return
0;
}
|
Nilai untuk arrayKu[0]: 12
Nilai untuk arrayKu[1]: 23
Nilai untuk arrayKu[2]: 32
Nilai untuk arrayKu[3]: 34
Nilai untuk arrayKu[4]: 54
0: 12
1: 23
2: 32
3: 34
4: 54
2.
Demonstrasikanlah penggunaan const dan enum dalam
array.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//ConstEnumArray.cpp
#include <iostream>
#include <conio.h>
int main()
{
enum
Hari2Minggu { Mggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu,
HariDlmMnggu };
int
ArrayMinggu[HariDlmMnggu] = { 10, 20, 30, 40, 50, 60, 70 };
std::cout << "Nilai pada Selasa adalah: "
<< ArrayMinggu[Selasa];
getch();
return
0;
}
|
Nilai pada Selasa adalah: 30
3.
Demonstrasikanlah bagaimana membuat sebuah array yang
berisi objek-objek.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//ArrayIsiObjek.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class Kucing
{
public:
Kucing() { umurNya = 1; beratNya=5; }
~Kucing() {}
int
GetUmur() const { return umurNya; }
int
GetBerat() const { return beratNya; }
void
SetUmur(int umur) { umurNya =
umur; }
private:
int
umurNya;
int
beratNya;
};
int main()
{
Kucing arrayKucing[5];
int
i;
for
(i = 0; i < 5; i++)
arrayKucing[i].SetUmur(2*i +1);
for
(i = 0; i < 5; i++)
{
cout << "Kucing #" << i+1<<
": ";
cout <<
arrayKucing[i].GetUmur() << endl;
}
getch();
return
0;
}
|
Kucing #1: 1
Kucing #2: 3
Kucing #3: 5
Kucing #4: 7
Kucing #5: 9
4.
Tulislah sebuah program C++ untuk menciptakan suatu
array dua-dimensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//ArrayDuaDimensi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int
Array2D[2][5] = { {0,1,2,3,4}, {0,2,4,6,8}};
for
(int i = 0; i<2; i++)
{
for
(int j=0; j<5; j++)
{
cout << "Array2D[" << i <<
"][" << j << "]: ";
cout <<
Array2D[i][j]<< endl;
}
}
getch();
return
0;
}
|
Array2D[0][0]: 0
Array2D[0][1]: 1
Array2D[0][2]: 2
Array2D[0][3]: 3
Array2D[0][4]: 4
Array2D[1][0]: 0
Array2D[1][1]: 2
Array2D[1][2]: 4
Array2D[1][3]: 6
Array2D[1][4]: 8
5.
Demonstrasikanlah bagaimana menciptakan sebuah array
yang memuat pointer-pointer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//ArrayPointer.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class Kucing
{
public:
Kucing() { umurNya = 1; beratNya=5; }
~Kucing() {} // destruktor
int
GetUmur() const { return umurNya; }
int
GetBerat() const { return beratNya; }
void
SetUmur(int umur) { umurNya =
umur; }
private:
int
umurNya;
int
beratNya;
};
int main()
{
Kucing * Famili[500];
int
i;
Kucing * pKucing;
for
(i = 0; i < 500; i++)
{
pKucing = new Kucing;
pKucing->SetUmur(2*i +1);
Famili[i] = pKucing;
}
for
(i = 0; i < 500; i++)
{
cout << "Kucing #" << i+1 << ": ";
cout << Famili[i]->GetUmur()
<< endl;
}
getch();
return
0;
}
|
Kucing #202: 403
Kucing #203: 405
Kucing #204: 407
…
Kucing #497: 993
Kucing #498: 995
Kucing #499: 997
Kucing #500: 999
6.
Demonstrasikanlah bagaimana menciptakan sebuah array
menggunakan operator new.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
//newUntukArray.cpp
#include <iostream>
#include <conio.h>
class Kucing
{
public:
Kucing() { umurNya = 1; beratNya=5; }
~Kucing();
int
GetUmur() const { return umurNya; }
int
GetBerat() const { return beratNya; }
void
SetUmur(int umur) { umurNya =
umur; }
private:
int
umurNya;
int
beratNya;
};
Kucing :: ~Kucing()
{
// std::cout << "Destruktor
dipanggil!\n";
}
int main()
{
Kucing * Famili = new Kucing[500];
int
i;
for
(i = 0; i < 500; i++)
{
Famili[i].SetUmur(2*i +1);
}
for
(i = 0; i < 500; i++)
{
std::cout << "Kucing #" << i+1 << ": ";
std::cout <<
Famili[i].GetUmur() << std::endl;
}
delete
[] Famili;
getch();
return
0;
}
|
Kucing #202: 403
Kucing #203: 405
Kucing #204: 407
…
Kucing #497: 993
Kucing #498: 995
Kucing #499: 997
Kucing #500: 999
7.
Demonstrasikanlah bagaimana mengalokasikan array pada
saat runtime.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//AlokasiArrayRunTime.cpp
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int
UkuranAlokasi = 5;
int
*pArrayAngka = new int[UkuranAlokasi];
int
ElemenDigunakanSejauhIni = 0;
int
MaksElemenDiijinkan = UkuranAlokasi;
int
AngkaMasukan = -1;
cout << endl << "Angka selanjutnya = ";
cin >> AngkaMasukan;
while
( AngkaMasukan > 0 )
{
pArrayAngka[ElemenDigunakanSejauhIni++] = AngkaMasukan;
if
( ElemenDigunakanSejauhIni == MaksElemenDiijinkan )
{
int *pArrayBesar =
new int[MaksElemenDiijinkan+UkuranAlokasi];
for ( int SalinIndeks
= 0;
SalinIndeks <
MaksElemenDiijinkan;
SalinIndeks++ )
{
pArrayBesar[SalinIndeks] =
pArrayAngka[SalinIndeks];
};
delete [] pArrayAngka;
pArrayAngka = pArrayBesar;
MaksElemenDiijinkan+=
UkuranAlokasi;
};
cout << endl << "Angka selanjutnya = ";
cin >> AngkaMasukan;
}
for
(int Indeks = 0; Indeks <
ElemenDigunakanSejauhIni; Indeks++)
{
cout << pArrayAngka[Indeks]
<< endl;
}
getch();
return
0;
}
|
Angka selanjutnya = 12
Angka selanjutnya = 23
Angka selanjutnya = 32
Angka selanjutnya = 34
Angka selanjutnya = 54
Angka selanjutnya = 55
Angka selanjutnya = 0
12
23
32
34
54
55
8.
Demonstrasikanlah bagaimana menggunakan kelas String.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
//gunakanKelasString.cpp
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
// kelas String sederhana
class String
{
public:
// konstruktor
String();
String(const char *const);
String(const String &);
~String();
// operator teroverload
char
& operator[](unsigned short offset);
char
operator[](unsigned short offset) const;
String operator+(const String&);
void
operator+=(const String&);
String & operator= (const String &);
// aksesor umum
unsigned
short GetPanjang()const { return pjgNya; }
const
char * GetString() const { return stringNya; }
private:
String (unsigned short); //
konstruktor private
char
* stringNya;
unsigned
short pjgNya;
};
// konstruktor default
menciptakan string 0 byte
String::String()
{
stringNya = new char[1];
stringNya[0] = '\0';
pjgNya=0;
}
// konstruktor private
(penolong) constructor, hanya digunakan
// oleh metode kelas untuk
menciptakan sebuah string baru
// dengan ukuran yang
diminta. Diisi dengan null
String::String(unsigned short pjg)
{
stringNya = new char[pjg+1];
for
(unsigned short i = 0; i<=pjg;
i++)
stringNya[i] = '\0';
pjgNya=pjg;
}
// Mengkonversi sebuah
array karakter menjadi String
String::String(const char * const cString)
{
pjgNya = strlen(cString);
stringNya = new char[pjgNya+1];
for (unsigned short i = 0; i<pjgNya; i++)
stringNya[i] = cString[i];
stringNya[pjgNya]='\0';
}
// konstruktor penyalin
String::String (const String & rhs)
{
pjgNya=rhs.GetPanjang();
stringNya = new char[pjgNya+1];
for (unsigned short i = 0; i<pjgNya;i++)
stringNya[i] = rhs[i];
stringNya[pjgNya] = '\0';
}
// destruktor, membebaskan
memori yang dipakai
String::~String ()
{
delete
[] stringNya;
pjgNya = 0;
}
// operator =, membebaskan
memori yang dipakai
// kemudian menyalin
string dan ukurannya
String&
String::operator=(const String
& rhs)
{
if
(this == &rhs)
return
*this;
delete
[] stringNya;
pjgNya=rhs.GetPanjang();
stringNya = new char[pjgNya+1];
for
(unsigned short i = 0; i<pjgNya;i++)
stringNya[i] = rhs[i];
stringNya[pjgNya] = '\0';
return
*this;
}
char & String::operator[](unsigned short offset)
{
if
(offset > pjgNya)
return stringNya[pjgNya-1];
else
return
stringNya[offset];
}
char String::operator[](unsigned
short offset) const
{
if
(offset > pjgNya)
return
stringNya[pjgNya-1];
else
return
stringNya[offset];
}
String String::operator+(const String& rhs)
{
unsigned
short pjgTotal = pjgNya +
rhs.GetPanjang();
String temp(pjgTotal);
unsigned
short i;
for
( i= 0; i<pjgNya; i++)
temp[i] = stringNya[i];
for
(unsigned short j = 0; j<rhs.GetPanjang(); j++, i++)
temp[i] = rhs[j];
temp[pjgTotal]='\0';
return
temp;
}
// mengubah string
sekarang, tidak menghasilkan apapun
void String::operator+=(const
String& rhs)
{
unsigned
short pjgRhs = rhs.GetPanjang();
unsigned
short pjgTotal = pjgNya + pjgRhs;
String temp(pjgTotal);
unsigned
short i;
for
(i = 0; i<pjgNya; i++)
temp[i] = stringNya[i];
for
(unsigned short j = 0; j<rhs.GetPanjang(); j++, i++)
temp[i] = rhs[i-pjgNya];
temp[pjgTotal]='\0';
*this
= temp;
}
int main()
{
String s1("uji awal");
cout << "S1:\t" << s1.GetString() << endl;
char
* temp = "Teknik Elektro";
s1 = temp;
cout << "S1:\t" << s1.GetString() << endl;
char
tempDua[20];
strcpy_s(tempDua,"; Selamat Datang!");
s1 += tempDua;
cout << "tempDua:\t" << tempDua << endl;
cout << "S1:\t" << s1.GetString() << endl;
cout << "S1[4]:\t"
<< s1[4] << endl;
s1[4]='x';
cout << "S1:\t" << s1.GetString() << endl;
cout << "S1[999]:\t" << s1[999] << endl;
String s2(" String lainnya");
String s3;
s3 = s1+s2;
cout << "S3:\t" << s3.GetString() << endl;
String s4;
s4 = "Ini bisa dilakukan?";
cout << "S4:\t" <<
s4.GetString() << endl;
getch();
return
0;
}
|
S1: uji
awal
S1:
Teknik Elektro
tempDua:
; Selamat Datang!
S1:
Teknik Elektro; Selamat Datang!
S1[4]: i
S1:
Teknxk Elektro; Selamat Datang!
S1[999]:
!
S3:
Teknxk Elektro; Selamat Datang! String lainnya
S4:
Ini bisa dilakukan?
9.
Tulislah sebuah program C++ yang mengimplementasikan
array untuk mencari nilai elemen tertinggi dan selisih dari tiap elemen
terhadap nilai elemen tertinggi tersebut.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//ArrayElemenTertinggi.cpp
//Membaca 5 skor dan
menunjukkan bagaimana setiap skor
//berbeda dari skor
tertinggi
#include <iostream>
#include <conio.h>
using namespace std;
int main( )
{
using
namespace std;
int
i, skor[5], maks;
cout << "Masukkan 5 skor:\n";
cin >> skor[0];
maks = skor[0];
for
(i = 1; i < 5; i++)
{
cin
>> skor[i];
if
(skor[i] > maks)
maks = skor[i];
//maks merupakan elemen
tertinggi dari skor[0],..., skor[i]
}
cout << "Skor tertinggi adalah " << maks << endl
<< "Daftar skor dan selisihnya dari \n"
<< "skor tertinggi adalah:\n";
for
(i = 0; i < 5; i++)
cout << skor[i] <<
", selisih dari elemen tertinggi
adalah: "
<< (maks - skor[i]) << endl;
getch();
return
0;
}
|
Masukkan 5 skor:
23
43
45
56
76
Skor tertinggi adalah 76
Daftar skor dan selisihnya dari
skor tertinggi adalah:
23, selisih dari elemen tertinggi adalah: 53
43, selisih dari elemen tertinggi adalah: 33
45, selisih dari elemen tertinggi adalah: 31
56, selisih dari elemen tertinggi adalah: 20
76, selisih dari elemen tertinggi adalah: 0
10.
Demonstrasikanlah
penginisialisasian (pemberian nilai) array dengan cara yang konvensional.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
//InisialisasiArray.cpp
//mendemonstrasikan penginisialisasian array
#include
<iostream>
#include
<conio.h>
using namespace std;
int main()
{
int arr[100]; //array
int jumElemen = 0; //jumlah item pada array
int j; //kounter loop
int kunciPencarian; //key of item to search for
arr[0] = 77;
//menyisipkan 10 item
arr[1] = 99;
arr[2] = 44;
arr[3] = 55;
arr[4] = 22;
arr[5] = 88;
arr[6] = 11;
arr[7] = 00;
arr[8] = 66;
arr[9] = 33;
jumElemen = 10;
//sekarang 10 item pada array
for(j=0; j<jumElemen; j++)
//menampilkan item-item
cout <<
arr[j] << " ";
cout <<
endl;
kunciPencarian =
66; //mencari item dengan kunci 66
for(j=0; j<jumElemen; j++) //untuk
setiap elemen,
if(arr[j] == kunciPencarian)
//menemukan item?
break; //ya, keluar sebelum end
if(j == jumElemen) //di akhir?
cout <<
"Tidak ditemukan "
<< kunciPencarian << endl;
else
cout <<
"Ditemukan " <<
kunciPencarian << endl;
kunciPencarian =
55; //menghapus item dengan kunci 55
cout <<
"Menghapus... " <<
kunciPencarian << endl;
for(j=0; j<jumElemen; j++)
//mencari item 55
if(arr[j] == kunciPencarian)
break;
for(int k = j; k<jumElemen; k++)
//memindahkan ke bawah
arr[k] =
arr[k+1];
jumElemen--;
//mendekremen jumElemen
for(j=0; j<jumElemen; j++)
//menampilkan setiap item
cout <<
arr[j] << " ";
cout << endl;
getch();
return 0;
} //akhir main()
|
77 99 44 55 22 88 11 0 66 33
Ditemukan 66
Menghapus... 55
77 99 44 22 88 11 0 66 33
11.
Tuliskanlah sebuah
program C++ dimana variabel berindeks dijadikan sebagai argumen.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//VariabelBerindeksSbgArgumen.cpp
//Mengilustrasikan
penggunaan variabel berindeks sebagai argumen.
//Menambahkan 5 pada
jumlah hari libur untuk tiap karyawan.
#include <iostream>
#include <conio.h>
const int
JUMLAH_KARYAWAN = 3;
int ubah_hari(int
hari_lama);
//Menghasilkan jumlah hari
libut ditambah 5.
int main( )
{
using
namespace std;
int
libur[JUMLAH_KARYAWAN], angka;
cout << "Masukkan jumlah hari libur untuk karyawan 1"
<< " sampai karyawan " << JUMLAH_KARYAWAN <<
":\n";
for
(angka = 1; angka <= JUMLAH_KARYAWAN; angka++)
cin >> libur[angka-1];
for
(angka = 0; angka < JUMLAH_KARYAWAN; angka++)
libur[angka] =
ubah_hari(libur[angka]);
cout << "Jumlah libur yang direvisi:\n";
for
(angka = 1; angka <= JUMLAH_KARYAWAN; angka++)
cout << "Nomor karyawan " << angka
<< " jumlah hari libur = " <<
libur[angka-1] << endl;
getch();
return
0;
}
int
ubah_hari(int hari_lama)
{
return (hari_lama + 5);
}
|
Masukkan jumlah hari libur untuk karyawan 1
sampai karyawan 3:
15
14
16
Jumlah libur yang direvisi:
Nomor karyawan 1 jumlah hari libur = 20
Nomor karyawan 2 jumlah hari libur = 19
Nomor karyawan 3 jumlah hari libur = 21
12.
Organisasikanlah
kasus pada nomor 2 dalam sebuah kelas.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
//InisialisasiArrayKelas.cpp
//mendemonstrasikan KelasArray
#include
<iostream>
#include
<vector>
#include
<conio.h>
using namespace std;
class KelasArray
{
private:
vector<double> v; //vector memuat nilai-nilai double
public:
KelasArray(int maks) //konstruktor
{
v.resize(maks); } //mengubah ukuran
vector
void setElem(int indeks, double
nilai) //menempatkan elemen ke
{ v[indeks] =
nilai; } //dalam array,
pada indeks
double
getElem(int indeks) //membaca
elemen dari
{ return v[indeks]; } //array, pada indeks
}; //akhir dari KelasArray
int main()
{
KelasArray
arr(100); //menciptakan sebuah KelasArray
int jumElemen = 0; //jumlah item
int j; //variabel loop
arr.setElem(0,
77); //menyisipkan 10 item
arr.setElem(1,
99);
arr.setElem(2,
44);
arr.setElem(3,
55);
arr.setElem(4,
22);
arr.setElem(5,
88);
arr.setElem(6,
11);
arr.setElem(7,
00);
arr.setElem(8,
66);
arr.setElem(9,
33);
jumElemen = 10;
//sekarang 10 item dalam array
for(j=0; j<jumElemen; j++)
//menampilkan setiap item
cout <<
arr.getElem(j) << " ";
cout <<
endl;
int kunciPencarian = 26; //mencari
item dengan nilai 26
for(j=0; j<jumElemen; j++) //untuk
setiap elemen,
if(arr.getElem(j) == kunciPencarian)
//ditemukan?
break;
if(j == jumElemen) //tidak
cout <<
"Tidak menemukan "
<< kunciPencarian << endl;
else //ya
cout <<
"Menemukan" <<
kunciPencarian << endl;
double kunciPenghapusan = 55;
//menghapus item dengan nilai 55
cout <<
"Menghapus elemen "
<< kunciPenghapusan << endl;
for(j=0; j<jumElemen; j++)
//mencari
if(arr.getElem(j)
== kunciPenghapusan)
break;
for(int k = j; k<jumElemen; k++) //memindahkan tiap elemen
mulai dari indeks j ke bawah
arr.setElem(k, arr.getElem(k+1) );
jumElemen--;
//mendekremen
for(j=0; j<jumElemen; j++)
//menampilkan tiap item
cout << arr.getElem(j) <<
" ";
cout <<
endl;
getch();
return 0;
} //akhir main()
|
77 99 44 55 22 88 11 0 66 33
Ditemukan 66
Menghapus... 55
77 99 44 22 88 11 0 66 33
13.
Perbaikilah kelas
pada soal sebelumnya sehingga menjadi lebih terstruktur.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
//InisialisasiKelasArrayBaik.cpp
//Mendemonstrasikan kelas array dengan lebih baik
#include
<iostream>
#include
<vector>
#include
<conio.h>
using namespace std;
class KelasArrayBaik
{
private:
vector<double> v; //vector v
int
jumElemen; //jumlah item
public:
KelasArrayBaik() : jumElemen(0) //konstruktor default
{ }
KelasArrayBaik(int
maks) : jumElemen(0) //konstruktur satu-argumen
{
v.resize(maks); } //mengubah ukuran vektor
bool cari(double kunciPencarian) //mencari nilai tertentu
{
int j;
for(j=0; j<jumElemen; j++) //untuk
tiap elemen,
if(v[j]
== kunciPencarian) //menemukan?
break;
//keluar loop sebelum end
if(j
== jumElemen) //sampai akhir?
return
false; //tidak bisa menemukannya
else
return true; //menemukannya
} //akhir
cari()
void sisip(double nilai) //menempatkan elemen ke dalam array
{
v[jumElemen] = nilai; //menyisipkan
jumElemen++; //menginkremen
}
bool
hapus(double nilai) //menghapus
elemen dari array
{
int j;
for(j=0; j<jumElemen; j++) //mencari
if(
nilai == v[j] )
break;
if(j==jumElemen) //tidak menemukannya
return false;
else //menemukannya
{
for(int k=j; k<jumElemen; k++) //memindahkan ke bawah
v[k] = v[k+1];
jumElemen--;
// mendekreman
return true;
}
} //akhir
hapus()
void
tampil() //menampilkan isi array
{
for(int j=0; j<jumElemen; j++) //untuk tiap elemen,
cout
<< v[j] << " "; //menampilkan
cout
<< endl;
}
}; //akhir kelas KelasArrayBaik
int main()
{
int ukuranMaks = 100; //ukuran array
KelasArrayBaik
arr(ukuranMaks); //vector
arr.sisip(77);
//menyisipkan 10 item
arr.sisip(99);
arr.sisip(44);
arr.sisip(55);
arr.sisip(22);
arr.sisip(88);
arr.sisip(11);
arr.sisip(0);
arr.sisip(66);
arr.sisip(33);
arr.tampil();
//menampilkan item-item
int kunciPencarian = 35; //mencari
item dengan nilai 25
if( arr.cari(kunciPencarian) )
cout <<
"Menemukan " <<
kunciPencarian << endl;
else
cout <<
"Tidak menemukan " << kunciPencarian << endl;
cout <<
"Menghapus 0, 55, dan 99" << endl;
arr.hapus(0);
//menghapus 3 item
arr.hapus(55);
arr.hapus(99);
arr.tampil();
//menampilkan item-item kembali
getch();
return 0;
} //akhir main()
|
77 99 44 55 22 88 11 0 66 33
Tidak menemukan 35
Menghapus 0, 55, dan 99
77 44 22 88 11 66 33
14.
Tulislah sebuah
program yang mengisi array secara parsial.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
//IsiArrayParsial.cpp
//Menunjukkan selisih tiap skor golf dan reratanya.
#include
<iostream>
#include
<conio.h>
const int
JUM_SKOR_MAKS = 10;
void isi_array(int a[], int ukuran, int& banyak_digunakan);
//Prakondisi: ukuran merupakan ukuran dari array a.
//Pascakondisi: banyak_digunakan merupakan
banyaknya nilai disimpan dalam a.
//a[0] sampai a[banyak_digunakan− 1] telah terisi dengan
//integer-integer tak-negatif dari keyboard.
double hitung_rerata(const int a[], int banyak_digunakan);
//Prakondisi: a[0] sampai
a[banyak_digunakan− 1] memiliki nilai-nilai;
//banyak_digunakan > 0.
//Menghasilkan rerata dari a[0] sampai a[banyak_digunakan−
1].
void tampil_selisih(const int a[], int banyak_digunakan);
//Prakondisi: Sejumlah banyak_digunakan
dari variabel berindeks yang memiliki nilai.
//Pascakondisi: Menampilkan berapa banyak dari
//banyak_digunakan elemen pertama yang berbeda dari
reratanya.
int main( )
{
using namespace std;
int skor[JUM_SKOR_MAKS],
banyak_digunakan;
cout <<
"Program ini membaca skor golf
dan menampilkan\n"
<<
"berapa banyak tiap skor berbeda
dari rerata.\n";
cout <<
"Masukkan skor golf:\n";
isi_array(skor,
JUM_SKOR_MAKS, banyak_digunakan);
tampil_selisih(skor, banyak_digunakan);
getch();
return 0;
}
void isi_array(int a[], int ukuran, int& banyak_digunakan)
{
using namespace std;
cout <<
"Masukkan sampai "
<< ukuran << " buah integer
tak-negatif.\n"
<<
"Akhiri dengan sebuah
integer negatif.\n";
int brktnya, indeks = 0;
cin >>
brktnya;
while ((brktnya >= 0) &&
(indeks < ukuran))
{
a[indeks] =
brktnya;
indeks++;
cin >>
brktnya;
}
banyak_digunakan
= indeks;
}
double hitung_rerata(const int a[], int
banyak_digunakan)
{
double total = 0;
for (int indeks = 0; indeks < banyak_digunakan; indeks++)
total = total
+ a[indeks];
if (banyak_digunakan > 0)
{
return (total/banyak_digunakan);
}
else
{
using namespace std;
cout <<
"ERROR: jumlah elemen adalah 0 dalam hitung_rerata.\n"
<<
"hitung_rerata menghasilkan 0.\n";
return 0;
}
}
void tampil_selisih(const int a[], int banyak_digunakan)
{
using namespace std;
double rerata = hitung_rerata(a,
banyak_digunakan);
cout <<
"Rerata dari " <<
banyak_digunakan
<<
" skor = " <<
rerata << endl
<< "Skor-skor:\n";
for (int indeks = 0; indeks < banyak_digunakan; indeks++)
cout <<
a[indeks] << " berbeda dari
rerata sejauh "
<<
(a[indeks] - rerata) << endl;
}
|
Akhiri dengan sebuah integer negatif.
23
34
43
32
33
24
25
26
26
27
-1
Rerata dari 10 skor6 = 29.3
Skor-skor:
23 berbeda dari rerata sejauh -6.3
34 berbeda dari rerata sejauh 4.7
43 berbeda dari rerata sejauh 13.7
32 berbeda dari rerata sejauh 2.7
33 berbeda dari rerata sejauh 3.7
24 berbeda dari rerata sejauh -5.3
25 berbeda dari rerata sejauh -4.3
26 berbeda dari rerata sejauh -3.3
26 berbeda dari rerata sejauh -3.3
27 berbeda dari rerata sejauh -2.3
15.
Tulislah sebuah
program C++ untuk melakukan pencarian pada suatu array.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
//pencarianArray.cpp
//Melakukan pencarian pada suatu array dengan elemen-elemen
tak-negatif.
#include
<iostream>
#include
<conio.h>
const int
UKURAN_DIDEKLARASIKAN = 20;
void isi_array(int a[], int ukuran, int& banyak_digunakan);
//Prakondisi: ukuran merupakan ukuran dari array a.
//Pascakondisi: banyak_digunakan merupakan
banyaknya nilai disimpan dalam a.
//a[0] sampai a[banyak_digunakan− 1] telah terisi dengan
//integer-integer tak-negatif dari keyboard.
int cari(const int a[], int banyak_digunakan, int target);
//Prakondisi: banyak_digunakan <= ukuran dari a.
//Juga, a[0] sampai a[banyak_digunakan −1] memiliki
nilai-nilai.
//Menghasilkan indeks pertama sehingga a[indeks] == target,
//jika tidak ditemukan menghasilkan −1.
int main( )
{
using namespace std;
int arr[UKURAN_DIDEKLARASIKAN],
ukuran_daftar, target;
isi_array(arr,
UKURAN_DIDEKLARASIKAN, ukuran_daftar);
char jwb;
int hasil;
do
{
cout <<
"Masukkan sebuah angka yang akan
dicari: ";
cin >>
target;
hasil = cari(arr,
ukuran_daftar, target);
if (hasil == -1)
cout
<< target << " tidak
ada dalam daftar.\n";
else
cout
<< target << " disimpan
dalam array pada posisi "
<< hasil << endl
<< "(Ingat: Posisi
pertama adalah 0.)\n";
cout <<
"cari lagi?(y/t kemudian tekan
ENTER): ";
cin >>
jwb;
}while ((jwb != 't') && (jwb
!= 'T'));
cout <<
"Akhir program.\n";
getch();
return 0;
}
void isi_array(int a[], int ukuran, int& banyak_digunakan)
{
using namespace std;
cout <<
"Masukkan sampai "
<< ukuran << " buah integer
tak-negatif.\n"
<<
"Akhiri dengan sebuah integer
negatif.\n";
int brktnya, indeks = 0;
cin >>
brktnya;
while ((brktnya >= 0) &&
(indeks < ukuran))
{
a[indeks] =
brktnya;
indeks++;
cin >>
brktnya;
}
banyak_digunakan
= indeks;
}
int cari(const int a[], int banyak_digunakan, int target)
{
int indeks = 0;
bool ditemukan = false;
while ((!ditemukan) &&
(indeks < banyak_digunakan))
if (target == a[indeks])
ditemukan
= true;
else
indeks++;
if (ditemukan)
return indeks;
else
return -1;
}
|
Masukkan sampai 20 buah integer tak-negatif.
Akhiri dengan sebuah integer negatif.
23 43 54 65 67 87 76 65 56 54 56 76 86 -1
Masukkan sebuah angka yang akan dicari: 87
87 disimpan dalam array pada posisi 5
(Ingat: Posisi pertama adalah 0.)
cari lagi?(y/t kemudian tekan ENTER): y
Masukkan sebuah angka yang akan dicari: 67
67 disimpan dalam array pada posisi 4
(Ingat: Posisi pertama adalah 0.)
cari lagi?(y/t kemudian tekan ENTER): y
Masukkan sebuah angka yang akan dicari: 87
87 disimpan dalam array pada posisi 5
(Ingat: Posisi pertama adalah 0.)
cari lagi?(y/t kemudian tekan ENTER): y
Masukkan sebuah angka yang akan dicari: 54
54 disimpan dalam array pada posisi 2
(Ingat: Posisi pertama adalah 0.)
cari lagi?(y/t kemudian tekan ENTER): t
Akhir program.
16.
Tulislah sebuah
program C++ untuk melakukan pengurutan terhadap suatu array.
Penyelesaian:
Ilustrasi
pengurutan yang dilakukan adalah sebagai berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
//MengurutkanArray.cpp
//Menguji prosedur pengurutan array.
#include
<iostream>
#include
<conio.h>
void isi_array(int a[], int ukuran, int& banyak_digunakan);
//Prakondisi: ukuran merupakan ukuran dari array a.
//Pascakondisi: banyak_digunakan merupakan
banyaknya nilai disimpan dalam a.
//a[0] sampai a[banyak_digunakan− 1] telah terisi dengan
//integer-integer tak-negatif dari keyboard.
void urut(int a[], int
banyak_digunakan);
//Prakondisi: banyak_digunakan <= ukuran dari array a.
//Elemen-elemen array a[0] sampai a[banyak_digunakan −
1] memiliki nilai-nilai.
//Pascakondisi: Nilai dari a[0] sampai
a[banyak_digunakan − 1] ditata
//sehingga a[0] <= a[1] <= ... <=
a[banyak_digunakan − 1].
void tukar_nilai(int& v1, int&
v2);
//Saling-menukar nilai v1 dan v2.
int indeks_terkecil(const int a[], int
indekas_awal, int banyak_digunakan);
//Prakondisi: 0 <= indekas_awal < banyak_digunakan.
//Menghasilkan indeks i sehingga a[i] adalah nilai terkecil
//a[indekas_awal], a[indekas_awal + 1], ...,
a[banyak_digunakan − 1].
int main( )
{
using namespace std;
cout <<
"Program ini mengurutkan
angka-angka dari terkecil sampai terbesar.\n";
int sample_array[10],
banyak_digunakan;
isi_array(sample_array, 10, banyak_digunakan);
urut(sample_array,
banyak_digunakan);
cout <<
"Dalam tatanan terurut, angka-angka
tersebut adalah:\n";
for (int indeks = 0; indeks < banyak_digunakan; indeks++)
cout <<
sample_array[indeks] << " ";
cout <<
endl;
getch();
return 0;
}
void isi_array(int a[], int ukuran, int& banyak_digunakan)
{
using
namespace std;
cout <<
"Masukkan sampai "
<< ukuran << " buah integer
tak-negatif.\n"
<<
"Akhiri dengan sebuah integer
negatif.\n";
int brktnya, indeks = 0;
cin >>
brktnya;
while ((brktnya >= 0) &&
(indeks < ukuran))
{
a[indeks] =
brktnya;
indeks++;
cin >>
brktnya;
}
banyak_digunakan
= indeks;
}
void urut(int
a[], int banyak_digunakan)
{
int indeks_dekat_terkecil;
for (int indeks = 0; indeks < banyak_digunakan - 1; indeks++)
{//Menempatkan
nilai yang tepat pada a[indeks]:
indeks_dekat_terkecil =
indeks_terkecil(a,
indeks, banyak_digunakan);
tukar_nilai(a[indeks], a[indeks_dekat_terkecil]);
//a[0] <=
a[1] <=...<= a[indeks] adalah elemen-elemen terkecil pada
//array
semula. Sisa elemen pada posisi lainnya.
}
}
void tukar_nilai(int& v1, int&
v2)
{
int temp;
temp = v1;
v1 = v2;
v2 = temp;
}
int indeks_terkecil(const int a[], int
indekas_awal, int banyak_digunakan)
{
int min = a[indekas_awal],
indeks_of_min =
indekas_awal;
for (int indeks = indekas_awal + 1; indeks < banyak_digunakan;
indeks++)
if (a[indeks] < min)
{
min =
a[indeks];
indeks_of_min = indeks;
//min adalah
yang terkecil dari a[indekas_awal] sampai a[indeks]
}
return indeks_of_min;
}
|
Program ini mengurutkan angka-angka dari
terkecil sampai terbesar.
Masukkan sampai 10 buah integer tak-negatif.
Akhiri dengan sebuah integer negatif.
12 32 344 32 21 32 21 23 34 32 -1
Dalam tatanan terurut, angka-angka tersebut
adalah:
12 21 21 23 32 32 32 32 34 344
17.
Tulislah sebuah
program C++ yang mengimplementasikan array dua-dimensi, dimana di dalamnya
dilibatkan penghitungan rerata.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
120
121
122
123
124
125
126
127
|
//ArrayDuaDimensiRerata.cpp
//Menempatkan skor kuis untuk tiap
mahasiswa ke dalam array dua-dimensi
//Menghitung skor rerata untuk tiap mahasiswa.
//Menghitung skor rerata untuk tiap kuis.
//Menampilkan skor kuis dan reratanya.
#include
<iostream>
#include
<iomanip>
#include
<conio.h>
const int
JUMLAH_MAHASISWA = 4, JUMLAH_KUIS = 3;
void hitung_rerata_mahasiswa(const double nilai[][JUMLAH_KUIS],
double rerata_mahasiswa[]);
//Prakondisi: konstanta global JUMLAH_MAHASISWA dan
JUMLAH_KUIS
//merupakan dimensi dari array nilai. Tiap variabel indeks
//nilai[nomor_mahasiswa− 1, nomor_kuis− 1] memuat skor
untuk
//mahasiswa nomor_mahasiswa pada nomor_kuis.
//Pascakondisi: Setiap
rerata_mahasiswa[nomor_mahasiswa− 1] memuat rerata untuk
//nomor mahasiswa nomor_mahasiswa.
void hitung_rerata_kuis(const double nilai[][JUMLAH_KUIS],
double rerata_kuis[]);
//Prakondisi: konstanta global JUMLAH_MAHASISWA dan
JUMLAH_KUIS
//merupakan dimensi dari array nilai. Tiap variabel indeks
//nilai[nomor_mahasiswa− 1, nomor_kuis− 1] memuat skor
untuk
//mahasiswa nomor_mahasiswa pada nomor_kuis.
//Pascakondisi: Setiap
rerata_kuis[nomor_kuis− 1] memuat rerata untuk
//nomor kuis nomor_kuis.
void tampil(const double
nilai[][JUMLAH_KUIS],
const double
rerata_mahasiswa[], const double rerata_kuis[]);
//Prakondisi: konstanta global JUMLAH_MAHASISWA dan
JUMLAH_KUIS
//merupakan dimensi dari array nilai. Tiap variabel indeks
//nilai[nomor_mahasiswa− 1, nomor_kuis− 1] memuat skor
untuk //mahasiswa nomor_mahasiswa pada nomor_kuis.
//Setiap rerata_mahasiswa[nomor_mahasiswa− 1] memuat rerata
untuk
//nomor mahasiswa nomor_mahasiswa.
//Setiap rerata_kuis[nomor_kuis− 1] memuat rerata untuk
//nomor kuis nomor_kuis.
//Pascakondisi: Semua data dalam array nilai,
rerata_mahasiswa,
//dan rerata_kuis akan ditampilkan.
int main( )
{
using namespace std;
double
nilai[JUMLAH_MAHASISWA][JUMLAH_KUIS];
double
rerata_mahasiswa[JUMLAH_MAHASISWA];
double rerata_kuis[JUMLAH_KUIS];
nilai[0][0] =
78.5; nilai[0][1]=87.8; nilai[0][2]=76.8;
nilai[1][0] =
88.5; nilai[1][1]=97.8; nilai[1][2]=86.8;
nilai[2][0] =
67.2; nilai[2][1]=77.7; nilai[2][2]=66.5;
nilai[3][0] =
88.7; nilai[3][1]=86.9; nilai[3][2]=79.7;
hitung_rerata_mahasiswa(nilai, rerata_mahasiswa);
hitung_rerata_kuis(nilai,
rerata_kuis);
tampil(nilai,
rerata_mahasiswa, rerata_kuis);
getch();
return 0;
}
void hitung_rerata_mahasiswa(const double nilai[][JUMLAH_KUIS],
double rerata_mahasiswa[])
{
for (int nomor_mahasiswa = 1; nomor_mahasiswa <= JUMLAH_MAHASISWA;
nomor_mahasiswa++)
{//Memproses satu
nomor_mahasiswa:
double jum = 0;
for (int nomor_kuis = 1; nomor_kuis <= JUMLAH_KUIS; nomor_kuis++)
jum = jum +
nilai[nomor_mahasiswa-1][nomor_kuis-1];
//jum memuat penjumlahan atas tiap nilai
skor
//untuk nomor mahasiswa nomor_mahasiswa.
rerata_mahasiswa[nomor_mahasiswa-1] = jum/JUMLAH_KUIS;
//Rerata
untuk mahasiswa nomor_mahasiswa adalah nilai
//dari rerata_mahasiswa[nomor_mahasiswa-1]
}
}
void hitung_rerata_kuis(const double nilai[][JUMLAH_KUIS],
double rerata_kuis[])
{
for (int nomor_kuis = 1; nomor_kuis <= JUMLAH_KUIS; nomor_kuis++)
{//Memproses satu
kuis (untuk semua mahasiswa):
double jum = 0;
for (int nomor_mahasiswa = 1; nomor_mahasiswa <=
JUMLAH_MAHASISWA;
nomor_mahasiswa++)
jum = jum
+ nilai[nomor_mahasiswa-1][nomor_kuis-1];
//jum memuat
penjumlahan atas semua skor mahasiswa
//untuk nomor kuis nomor_kuis.
rerata_kuis[nomor_kuis-1] = jum/JUMLAH_MAHASISWA;
//Rerata
untuk kuis nomor_kuis
//adalah nilai dari
rerata_kuis[nomor_kuis-1]
}
}
void tampil(const double
nilai[][JUMLAH_KUIS], const double
rerata_mahasiswa[],
const double rerata_kuis[])
{
using namespace std;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(1);
cout <<
setw(10) << "Mahasiswa"
<<
setw(5) << "Rerata"
<<
setw(15) << "Kuis\n";
for (int nomor_mahasiswa = 1; nomor_mahasiswa <=
JUMLAH_MAHASISWA;
nomor_mahasiswa++)
{//menampilkan
untuk satu nomor_mahasiswa:
cout <<
setw(10) << nomor_mahasiswa
<<
setw(5) << rerata_mahasiswa[nomor_mahasiswa-1] << " ";
for (int nomor_kuis = 1; nomor_kuis <= JUMLAH_KUIS; nomor_kuis++)
cout
<< setw(5) << nilai[nomor_mahasiswa-1][nomor_kuis-1];
cout <<
endl;
}
cout <<
"Rerata kuis = ";
for (int nomor_kuis = 1; nomor_kuis <= JUMLAH_KUIS; nomor_kuis++)
cout <<
setw(5) << rerata_kuis[nomor_kuis-1];
cout <<
endl;
}
|
Mahasiswa
Rerata Kuis
1 81.0
78.5 87.8 76.8
2 91.0
88.5 97.8 86.8
3 70.5
67.2 77.7 66.5
4 85.1
88.7 86.9 79.7
Rerata kuis =
80.7 87.6 77.5
18.
Tulislah sebuah
program C++ yang melakukan pencarian, penghapusan, dan penyisipan pada sebuah
array.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
//modifikasi_array.cpp
#include
<iostream>
#include
<vector>
#include
<conio.h>
using namespace std;
class ArrayTerurut
{
private:
vector<double> v; //vector v
int jumElemen; //jumlah item data
public:
ArrayTerurut(int maks) : jumElemen(0)
//konstruktor
{ v.resize(maks);
} //ukuran vector
int
getUkuran() //menghasilkan jumlah elemen
{ return jumElemen; }
int cari(double kunciPencarian) //pencarian Biner
{
int
batasBawah = 0;
int batasAtas = jumElemen-1;
int indeksSkrg;
while(true)
{
indeksSkrg = (batasBawah + batasAtas ) / 2;
if(v[indeksSkrg]==kunciPencarian)
return indeksSkrg; //ditemukan
else if(batasBawah > batasAtas)
return jumElemen; //tidak ditemukan
else //membagi rentang
{
if(v[indeksSkrg] < kunciPencarian)
batasBawah = indeksSkrg + 1; //di bagian atas
else
batasAtas = indeksSkrg - 1; //di bagian bawah
}
//akhir else bagi rentang
} //akhir
while
} //akhir
cari()
void
sisip(double nilai) //menempatkan
elemen ke dalam array
{
int j;
for(j=0; j<jumElemen; j++)
if(v[j] > nilai) //(pencarian
linier)
break;
for(int k=jumElemen; k>j; k--) //memindahkan satu ke atas
v[k]
= v[k-1];
v[j] =
nilai; //menyisipkan
jumElemen++; //menginkremen
} //akhir
sisip()
bool hapus(double nilai)
{
int j = cari(nilai);
if(j==jumElemen) //tidak ditemukan
return false;
else //ditemukan
{
for(int k=j; k<jumElemen; k++) //memindahkan satu ke atas
v[k] = v[k+1];
jumElemen--; //mendekremen
return true;
}
} //akhir
hapus()
void display() //menampilkan isi
array
{
for(int j=0; j<jumElemen; j++) //untuk tiap elemen,
cout
<< v[j] << " "; //ditampilkan
cout
<< endl;
}
}; //akhir kelas ArrayTerurut
int main()
{
int ukuranMaks = 100; //ukuran array
ArrayTerurut
arr(ukuranMaks); //menciptakan array
arr.sisip(77);
//menyisipkan 10 item
arr.sisip(99);
arr.sisip(44);
arr.sisip(55);
arr.sisip(22);
arr.sisip(88);
arr.sisip(11);
arr.sisip(00);
arr.sisip(66);
arr.sisip(33);
int kunciPencarian = 55; //mencari
item dengan nilai 55
if( arr.cari(kunciPencarian) != arr.getUkuran()
)
cout <<
"Menemukan " <<
kunciPencarian << endl;
else
cout <<
"Tidak menemukan " << kunciPencarian << endl;
arr.display();
//menampilkan array
cout <<
"Menghapus 0, 55, dan 99" << endl;
arr.hapus(00);
//menghapus 3 item
arr.hapus(55);
arr.hapus(99);
arr.display();
//menampilkan array kembali
getch();
return 0;
} //akhir main()
|
Menemukan 55
0 11 22 33 44 55 66 77 88 99
Menghapus 0, 55, dan 99
11 22 33 44 66 77 88
19.
Tulislah sebuah
program C++ yang mengimplementasikan array dan kelas, dimana elemen-elemen
array adalah objek-objek dari suatu kelas.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
//arrayObjek.cpp
//Elemen-elemen array sebagai objek-objek kelas
#include
<iostream>
#include
<string>
#include
<vector>
#include
<conio.h>
using namespace std;
class Orang
{
private:
string namaBelakang;
string namaDepan;
int usia;
public:
Orang(string belakang, string depan, int a) :
//konstruktor
namaBelakang(belakang), namaDepan(depan), usia(a)
{ }
void tampilOrang()
{
cout
<< "Nama belakang: " <<
namaBelakang;
cout
<< ", Nama depan: " << namaDepan;
cout
<< ", usia: "
<< usia << endl;
}
string getBelakang() //membaca nama
belakang
{ return namaBelakang; }
}; //akhir kelas Orang
class KelasDataArray
{
private:
vector<Orang*> v; //vector
memuat pointer-pointer
int jumElemen; //jumlah item data
public:
KelasDataArray(int max) :
jumElemen(0) //konstruktor
{
v.resize(max); } //menciptakan array
~KelasDataArray()
//destruktor
{
for(int j=0; j<jumElemen; j++) //menghapus tiap elemen
delete v[j];
}
Orang*
cari(string namaDicari)
{ //mencari
nilai tertentu
int j;
for(j=0; j<jumElemen; j++) //untuk
tiap elemen,
if( v[j]->getBelakang() ==
namaDicari ) //ditemukan?
break; //keluar loop sebelum end
if(j == jumElemen) //sampai akhir?
return NULL; //ya, tidak ditemukan
else
return v[j]; //tidak, item ditemukan
}; //akhir
cari()
//menempatkan
Orang ke dalam array
void sisip(string belakang, string depan, int usia)
{
v[jumElemen] = new
Orang(belakang, depan, usia);
jumElemen++; //menginkremen
}
bool hapus(string namaDicari) //menghapus objek Orang dari
array
{
int
j;
for(j=0; j<jumElemen; j++)
//mencari
if( v[j]->getBelakang() ==
namaDicari )
break;
if(j==jumElemen) //tidak ditemukan
return false;
else //item ditemukan
{
delete v[j]; //menghapus objek Orang
for(int k=j; k<jumElemen; k++) //menggeser ke bawah
v[k] = v[k+1];
jumElemen--; //mendekreman
return true;
}
} //akhir
hapus()
void tampilArray() //menampilkan isi
array
{
for(int j=0; j<jumElemen; j++) //untuk tiap elemen,
v[j]->tampilOrang(); //menampilkan
}
}; //akhir kelas KelasDataArray
int main()
{
int ukuranMaks =
100; //ukuran array
KelasDataArray
arr(ukuranMaks); //array
arr.sisip("Rismon", "Sianipar", 24); //sisip 10 items
arr.sisip("Robert", "Tohonan", 37);
arr.sisip("Rico", "Chandra", 43);
arr.sisip("Rotua", "Marolop", 63);
arr.sisip("Rini", "Meika", 21);
arr.sisip("Eva", "Teti", 29);
arr.sisip("Patricia", "Siahaan", 72);
arr.sisip("Vivian", "Jozen", 54);
arr.sisip("Jodi", "Pratama", 22);
arr.sisip("Jonathan", "Sitanggang", 18);
arr.tampilArray(); //menampilkan isi array
string kunciPencarian = "Eva"; //mencari item
cout <<
"Mencari Eva" << endl;
Orang* ditemukan;
ditemukan =
arr.cari(kunciPencarian);
if(ditemukan != NULL)
{
cout <<
"Ditemukan ";
ditemukan->tampilOrang();
}
else
cout <<
"Tidak ditemukan " << kunciPencarian << endl;
cout <<
"Menghapus Rismon, Jodi, dan Rotua" << endl;
arr.hapus("Rismon"); //menghapus 3 item
arr.hapus("Jodi");
arr.hapus("Rotua");
arr.tampilArray(); //menampilkan array kembali
getch();
return 0;
} //akhir main()
|
Nama belakang: Rismon, Nama depan: Sianipar,
usia: 24
Nama belakang: Robert, Nama depan: Tohonan,
usia: 37
Nama belakang: Rico, Nama depan: Chandra, usia:
43
Nama belakang: Rotua, Nama depan: Marolop,
usia: 63
Nama belakang: Rini, Nama depan: Meika, usia:
21
Nama belakang: Eva, Nama depan: Teti, usia: 29
Nama belakang: Patricia, Nama depan: Siahaan,
usia: 72
Nama belakang: Vivian, Nama depan: Jozen, usia:
54
Nama belakang: Jodi, Nama depan: Pratama, usia:
22
Nama belakang: Jonathan, Nama depan:
Sitanggang, usia: 18
Mencari Eva
Ditemukan Nama belakang: Eva, Nama depan: Teti,
usia: 29
Menghapus Rismon, Jodi, dan Rotua
Nama belakang: Robert, Nama depan: Tohonan,
usia: 37
Nama belakang: Rico, Nama depan: Chandra, usia:
43
Nama belakang: Rini, Nama depan: Meika, usia:
21
Nama belakang: Eva, Nama depan: Teti, usia: 29
Nama belakang: Patricia, Nama depan: Siahaan,
usia: 72
Nama belakang: Vivian, Nama depan: Jozen, usia:
54
Nama belakang: Jonathan, Nama depan:
Sitanggang, usia: 18
No comments:
Post a Comment