Monday, December 26, 2016

Bab 18. Soal & Penyelesaian C++


Standard Template Library





Soal & Penyelesaian
1.   Tulislah sebuah program C++ untuk mendemonstrasikan bagaimana iterator digunakan dengan sebuah Vector.
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
//iteratorDenganVektor.cpp
//Mendemonstrasikan iterator STL
#include <iostream>
#include <vector>
#include <conio.h>
using std::cout;
using std::endl;
using std::vector;

int main()
{
    vector<int> kontainer;
    for (int i = 1; i <= 4; i++)
        kontainer.push_back(i);

    cout << "Berikut adalah apa yang ada dalam kontainer:\n";
    vector<int>::iterator p;

    for (p = kontainer.begin(); p != kontainer.end(); p++)
        cout << *p << " ";
    cout << endl;

    cout << "Penetapan tiap entri menjadi 0:\n";
    for (p = kontainer.begin(); p != kontainer.end(); p++)
        *p = 0;

    cout << "kontainer sekarang memuat:\n";
    for (p = kontainer.begin(); p != kontainer.end(); p++)
        cout << *p << " ";
    cout << endl;

    getch();
    return 0;
}

Berikut adalah apa yang ada dalam kontainer:
1 2 3 4
Penetapan tiap entri menjadi 0:
kontainer sekarang memuat:
0 0 0 0


2.       Tulislah sebuah program C++ untuk mendemonstrasikan iterator bidirectional dan iterator random access.
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
//iteratorBiderectionalDanRandomAccess.cpp
#include <iostream>
#include <vector>
#include <conio.h>
using std::cout;
using std::endl;
using std::vector;

int main()
{
    vector<char> kontainer;
    kontainer.push_back('A');
    kontainer.push_back('B');
    kontainer.push_back('C');
    kontainer.push_back('D');

    for (int i = 0; i < 4; i++)
        cout << "kontainer[" << i << "] == "
             << kontainer[i] << endl;

    vector<char>::iterator p = kontainer.begin();
    cout << "Entri ketiga adalah " << kontainer[2] << endl;
    cout << "Entri ketiga adalah " << p[2] << endl;
    cout << "Entri ketiga adalah " << *(p + 2) << endl;

    cout << "Kembali ke kontainer[0].\n";
    p = kontainer.begin();
    cout << "yang memiliki nilai " << *p << endl;

    cout << "Dua langkah maju dan satu langkah mundur:\n";
    p++;
    cout << *p << endl;
    p++;
    cout << *p << endl;
    p--;
    cout << *p << endl;

    getch();
    return 0;
}

kontainer[0] == A
kontainer[1] == B
kontainer[2] == C
kontainer[3] == D
Entri ketiga adalah C
Entri ketiga adalah C
Entri ketiga adalah C
Kembali ke kontainer[0].
yang memiliki nilai A
Dua langkah maju dan satu langkah mundur:
B
C
B


3.       Tulislah sebuah program C++ untuk mendemonstrasikan reverse iterator.
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
//iteratorReverse.cpp
#include <iostream>
#include <vector>
#include <conio.h>
using std::cout;
using std::endl;
using std::vector;

int main()
{
    vector<char> kontainer;
    kontainer.push_back('A');
    kontainer.push_back('B');
    kontainer.push_back('C');

    cout << "Maju:\n";
    vector<char>::iterator p;
    for (p = kontainer.begin(); p != kontainer.end(); p++)
        cout << *p << " ";
    cout << endl;

    cout << "Reverse:\n";
    vector<char>::reverse_iterator rp;
    for (rp = kontainer.rbegin(); rp != kontainer.rend(); rp++)
        cout << *rp << " ";
    cout << endl;

    getch();
    return 0;
}

Maju:
A B C
Reverse:
C B A

4.       Tulislah sebuah program C++ untuk mendemonstrasikan kelas template list.
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
//kelasTemplateList.cpp
//Mendemonstrasikan kelas template list.
#include <iostream>
#include <list>
#include <conio.h>
using std::cout;
using std::endl;
using std::list;

int main()
{
    list<int> objek_list;

    for (int i = 1; i <= 3; i++)
        objek_list.push_back(i);

    cout << "List memuat:\n";
    list<int>::iterator iter;
    for (iter = objek_list.begin(); iter != objek_list.end(); iter++)
      cout << *iter << " ";
    cout << endl;

    cout << "Pengaturan semua entri menjadi 0:\n";
    for (iter = objek_list.begin(); iter != objek_list.end(); iter++)
        *iter = 0;

    cout << "List sekarang memuat:\n";
    for (iter = objek_list.begin(); iter != objek_list.end(); iter++)
        cout << *iter << " ";
    cout << endl;

    getch();
    return 0;
}

List memuat:
1 2 3
Pengaturan semua entri menjadi 0:
List sekarang memuat:
0 0 0

5.       Tulislah sebuah program C++ untuk mendemonstrasikan kelas template stack.
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
//kelasTemplateStack.cpp
//Mendemonstrasikan penggunaan kelas template stack.
#include <iostream>
#include <stack>
#include <conio.h>
using std::cin;
using std::cout;
using std::endl;
using std::stack;

int main()
{
    stack<char> s;

    cout << "Masukkan sebaris teks:\n";
    char brktnya;
    cin.get(brktnya);
    while (brktnya != '\n')
    {
        s.push(brktnya);
        cin.get(brktnya);
    }

    cout << "Ditulis mundur menjadi:\n";
    while ( ! s.empty() )
    {
        cout << s.top();
        s.pop();
    }
    cout << endl;

    getch();
    return 0;
}

Masukkan sebaris teks:
Teknik Elektro Universitas Gadjah Mada
Ditulis mundur menjadi:
adaM hajdaG satisrevinU ortkelE kinkeT

6.       Tulislah sebuah program C++ untuk mendemonstrasikan kelas template set.
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
//kelasTemplateSet.cpp
//Mendemonstrasikan penggunaan kelas template set.
#include <iostream>
#include <set>
#include <conio.h>
using std::cout;
using std::endl;
using std::set;

int main()
{
    set<char> s;

    s.insert('A');
    s.insert('D');
    s.insert('D');
    s.insert('C');
    s.insert('C');
    s.insert('B');

    cout << "Set memuat:\n";
    set<char>::const_iterator p;
    for (p = s.begin(); p != s.end(); p++)
        cout << *p << " ";
    cout << endl;

    cout << "Menghapus C:\n";
    s.erase('C');
    for (p = s.begin(); p != s.end(); p++)
        cout << *p << " ";
    cout << endl;

    getch();
    return 0;
}

Set memuat:
A B C D
Menghapus C:
A B D

7.       Tulislah sebuah program C++ untuk mendemonstrasikan kelas template map.
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
//kelasTemplateMap.cpp
#include <iostream>
#include <map>
#include <string>
#include <conio.h>
using std::cout;
using std::endl;
using std::map;
using std::string;

int main()
{
    map<string, string> planet;
    planet["Merkuri"] = "Planet yang panas";
    planet["Venus"] = "Atmosfir berupa asam sulfat";
    planet["Bumi"] = "Rumah";
    planet["Mars"] = "Planet merah";
    planet["Jupiter"] = "Planet terbesar dalam tata surya kita";
    planet["Saturnus"] = "Memiliki cincin";
    planet["Uranus"] = "Masih misteri";
    planet["Neptunus"] = "Dengan angin 700 km/jam";
    planet["Pluto"] = "Planet kecil";

    cout << "Entri untuk Merkuri - " << planet["Merkuri"]
         << endl << endl;

    if (planet.find("Merkuri") != planet.end( ))
        cout << "Merkuri ada dalam map." << endl;

    if (planet.find("Ceres") == planet.end( ))
        cout << "Ceres tidak ada dalam map." << endl << endl;

    cout << "Beriterasi melalui semua planet: " << endl;
    map<string, string>::const_iterator iter;
    for (iter = planet.begin(); iter != planet.end(); iter++)
    {
        cout << iter->first << " - " << iter->second << endl;
    }

    getch();
    return 0;
}

Entri untuk Merkuri - Planet yang panas

Merkuri ada dalam map.
Ceres tidak ada dalam map.

Beriterasi melalui semua planet:
Bumi - Rumah
Jupiter - Planet terbesar dalam tata surya kita
Mars - Planet merah
Merkuri - Planet yang panas
Neptunus - Dengan angin 700 km/jam
Pluto - Planet kecil
Saturnus - Memiliki cincin
Uranus - Masih misteri
Venus - Atmosfir berupa asam sulfat




No comments:

Post a Comment