Monday, December 26, 2016

Bab 1. Soal & Penyelesaian C++


FUNGSI





Soal & Penyelesaian
1.       Demonstrasikanlah pendeklarasian, pendefinisian, dan penggunaan sebuah fungsi dalam suatu program C++.
Penyelesian:

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
//DeklarasiDefinisiFungsi.cpp
#include <iostream>
#include <conio.h>

int Luas(int panjang, int lebar); //prototipe fungsi

int main()
{
    using std::cout;
    using std::cin;

    int panjangHalaman;
    int lebarHalaman;
    int luasHalaman;

    cout << "\nBerapa lebar halaman Anda? ";
    cin >> lebarHalaman;
    cout << "\nBerapa panjang halaman Anda? ";
    cin >> panjangHalaman;

    luasHalaman= Luas(panjangHalaman, lebarHalaman);

    cout << "\nHalaman Anda memiliki luas ";
    cout << luasHalaman;
    cout << " meter persegi\n\n";

    getch();
    return 0;
}

int Luas(int pjg, int lbr)
{
    return pjg * lbr;
}

Berapa lebar halaman Anda? 23
Berapa panjang halaman Anda? 34
Halaman Anda memiliki luas 782 meter persegi

2.       Demonstrasikanlan penggunakan variabel dan parameter lokal.
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
//VariabelParameterLokal.cpp
#include <iostream>
#include <conio.h>

float Konversi(float);

int main()
{
    using namespace std;

    float suhuFer;
    float suhuSel;

    cout << "Masukkan suhu dalam Fahrenheit: ";
    cin >> suhuFer;
    suhuSel = Konversi(suhuFer);
    cout << "\nBerikut adalah suhu dalam Celcius: ";
    cout << suhuSel << endl;

    getch();
    return 0;
}

float Konversi(float suhuFer)
{
    float suhuSel;
    suhuSel = ((suhuFer - 32) * 5) / 9;
    return suhuSel;
}

Masukkan suhu dalam Fahrenheit: 123

Berikut adalah suhu dalam Celcius: 50.5556

3.       Demonstrasikanlah penggunaan variabel yang memiliki skop blok.
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
//VariabelSkopBlok.cpp
#include <iostream>
#include <conio.h>

void fungsiKu();

int main()
{
    int x = 5;
    std::cout << "\nDalam main x adalah: " << x;

    fungsiKu();

    std::cout << "\nKembali dalam main, x adalah: " << x;

    getch();
    return 0;
}

void fungsiKu()
{
    int x = 8;
    std::cout << "\nDalam fungsiKu, x lokal: " << x << std::endl;

    {
       std::cout << "\nDalam blok di dalam fungsiKu, x adalah: " << x;

       int x = 9;

       std::cout << "\nx lokal: " << x;
    }

    std::cout << "\nDi luar blok, di dalam fungsiKu, x: " << x << std::endl;
}

Dalam main x adalah: 5
Dalam fungsiKu, x lokal: 8

Dalam blok di dalam fungsiKu, x adalah: 8
x lokal: 9
Di luar blok, di dalam fungsiKu, x: 8

Kembali dalam main, x adalah: 5

4.       Demonstrasikanlah pelewatan dengan nilai pada sebuah program C++.
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
//FungsiPelewatanDenganNilai.cpp
#include <iostream>
#include <conio.h>

using namespace std;
void tukar(int x, int y);

int main()
{
    int x = 5, y = 10;

    cout << "Main. Sebelum tukar, x: " << x << " y: " << y << endl;
    tukar(x,y);
    cout << "Main. Setelah tukar, x: " << x << " y: " << y << endl;

    getch();
    return 0;
}

void tukar (int x, int y)
{
    int temp;

    cout << "Tukar. Sebelum tukar, x: " << x << " y: " << y << endl;

    temp = x;
    x = y;
    y = temp;

    cout << "Tukar. Setelah tukar, x: " << x << " y: " << y << endl;
}

Main. Sebelum tukar, x: 5 y: 10
Tukar. Sebelum tukar, x: 5 y: 10
Tukar. Setelah tukar, x: 10 y: 5
Main. Setelah tukar, x: 5 y: 10


5.       Demonstrasikanlah penggunaan variabel lokal dan variabel global.
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
//VariabelLokalGlobal.cpp
#include <iostream>
#include <conio.h>

void fungsiKu(); // prototipe

int x = 5, y = 7; // variabel global

int main()
{
    using namespace std;

    cout << "x dari main: " << x << endl;
    cout << "y dari main: " << y << endl << endl;
    fungsiKu();
    cout << "Kembali dari fungsiKu!" << endl << endl;
    cout << "x dari main: " << x << endl;
    cout << "y dari main: " << y << endl;

    getch();
    return 0;
}

void fungsiKu()
{
    using namespace std;

    int y = 10;

    cout << "x dari fungsiKu: " << x << endl;
    cout << "y dari fungsiKu: " << y << endl << endl;
}

x dari main: 5
y dari main: 7

x dari fungsiKu: 5
y dari fungsiKu: 10

Kembali dari fungsiKu!

x dari main: 5
y dari main: 7

6.       Demonstrasikanlah penggunaan beberapa statemen return.
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
//BeberapaStatemenReturn.cpp
#include <iostream>
#include <conio.h>

int Pengganda(int YangDigandakan);

int main()
{
    using std::cout;

    int hasil = 0;
    int masukan;

    cout << "Masukkan sebuah angka antara 0 dan 10000 untuk digandakan: ";
    std::cin >> masukan;

    cout << "\nSebelum Pengganda dipanggil... ";
    cout << "\nmasukan: " << masukan << " digandakan: " << hasil << "\n";

    hasil = Pengganda(masukan);

    cout << "\nKembali dari Pengganda...\n";
    cout << "\nmasukan: " << masukan << " digandakan: " << hasil << "\n";

    getch();
    return 0;
}

int Pengganda(int asli)
{
    if (asli <= 10000)
        return asli * 2;
    else
        return -1;
    std::cout << "Anda tidak bisa sampai di sini!\n";
}

Masukkan sebuah angka antara 0 dan 10000 untuk digandakan: 345

Sebelum Pengganda dipanggil...
masukan: 345 digandakan: 0

Kembali dari Pengganda...

masukan: 345 digandakan: 690

7.       Demonstrasikanlah penggunaan nilai parameter default dalam sebuah program C++.
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
//NilaiParameterDefault.cpp
#include <iostream>
#include <conio.h>

int LuasKubik(int panjang, int lebar = 25, int tinggi = 1);

int main()
{
    int panjang = 100;
    int lebar = 50;
    int tinggi = 2;
    int luas;

    luas = LuasKubik(panjang, lebar, tinggi);
    std::cout << "Luas pertama sama dengan: " << luas << "\n";

    luas = LuasKubik(panjang, lebar);
    std::cout << "Kedua kali luas sama dengan: " << luas << "\n";

    luas = LuasKubik(panjang);
    std::cout << "Ketiga kali luas sama dengan: " << luas << "\n";

    getch();
    return 0;
}

int LuasKubik(int panjang, int lebar, int tinggi)
{
    return (panjang * lebar * tinggi);
}

Luas pertama sama dengan: 10000
Kedua kali luas sama dengan: 5000
Ketiga kali luas sama dengan: 2500

8.       Demonstrasikanlah polimorfisme fungsi dalam sebuah program C++.
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
//PolimorfismeFungsi.cpp
#include <iostream>
#include <conio.h>

int Double(int);
long Double(long);
float Double(float);
double Double(double);

using namespace std;

int main()
{
    int intKu = 6500;
    long longKu = 65000;
    float floatKu = 6.5F;
    double doubleKu = 6.5e20;

    int doubledInt;
    long doubledLong;
    float doubledFloat;
    double doubledDouble;

    cout << "intKu: " << intKu << "\n";
    cout << "longKu: " << longKu << "\n";
    cout << "floatKu: " << floatKu << "\n";
    cout << "doubleKu: " << doubleKu << "\n";

    doubledInt = Double(intKu);
    doubledLong = Double(longKu);
    doubledFloat = Double(floatKu);
    doubledDouble = Double(doubleKu);

    cout << "doubledInt: " << doubledInt << "\n";
    cout << "doubledLong: " << doubledLong << "\n";
    cout << "doubledFloat: " << doubledFloat << "\n";
    cout << "doubledDouble: " << doubledDouble << "\n";

    getch();
    return 0;
}

int Double(int original)
{
    cout << "Dalam Double(int)\n";
    return 2 * original;
}

long Double(long original)
{
    cout << "Dalam Double(long)\n";
    return 2 * original;
}

float Double(float original)
{
    cout << "Dalam Double(float)\n";
    return 2 * original;
}

double Double(double original)
{
    cout << "Dalam Double(double)\n";
    return 2 * original;
}

intKu: 6500
longKu: 65000
floatKu: 6.5
doubleKu: 6.5e+020
Dalam Double(int)
Dalam Double(long)
Dalam Double(float)
Dalam Double(double)
doubledInt: 13000
doubledLong: 130000
doubledFloat: 13
doubledDouble: 1.3e+021

9.       Demonstrasikanlah fungsi inline dalam sebuah program C++.
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
//fungsiInline.cpp
#include <iostream>
#include <conio.h>

inline int Double(int);

int main()
{
    int target;
    using std::cout;
    using std::cin;
    using std::endl;

    cout << "Masukkan sebuah angka: ";
    cin >> target;
    cout << "\n";

    target = Double(target);
    cout << "Target: " << target << endl;

    target = Double(target);
    cout << "Target: " << target << endl;

    target = Double(target);
    cout << "Target: " << target << endl;

    getch();
    return 0;
}

int Double(int target)
{
    return 2*target;
}

Masukkan sebuah angka: 23

Target: 46
Target: 92
Target: 184

10.    Demonstrasikanlah rekursi menggunakan deret Fibonacci.
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
//RekursiDeretFibonacci.cpp
#include <iostream>
#include <conio.h>

int fib (int n);

int main()
{

    int n, jawaban;
    std::cout << "Masukkan angka yang akan dihitung: ";
    std::cin >> n;

    std::cout << "\n\n";

    jawaban = fib(n);

    std::cout << jawaban << " adalah angka Fibonacci ke-" << n;

    getch();
    return 0;
}

int fib (int n)
{
    std::cout << "Memproses fib(" << n << ")... ";

    if (n < 3 )
    {
        std::cout << "Menghasilkan 1!\n";
        return (1);
    }

    else
    {
        std::cout << "Memanggil fib(" << n-2 << ") ";
        std::cout << "dan fib(" << n-1 << ").\n";
        return( fib(n-2) + fib(n-1));
    }
}

Masukkan angka yang akan dihitung: 8

Memproses fib(8)... Memanggil fib(6) dan fib(7).
Memproses fib(6)... Memanggil fib(4) dan fib(5).
Memproses fib(4)... Memanggil fib(2) dan fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(5)... Memanggil fib(3) dan fib(4).
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(7)... Memanggil fib(5) dan fib(6).
Memproses fib(5)... Memanggil fib(3) dan fib(4).
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(6)... Memanggil fib(4) dan fib(5).
Memproses fib(4)... Memanggil fib(2) dan fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(5)... Memanggil fib(3) dan fib(4).
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
Memproses fib(4)... Memanggil fib(2) dan fib(3).
Memproses fib(2)... Menghasilkan 1!
Memproses fib(3)... Memanggil fib(1) dan fib(2).
Memproses fib(1)... Menghasilkan 1!
Memproses fib(2)... Menghasilkan 1!
21 adalah angka Fibonacci ke-8

11.    Tulislah sebuah program C++ untuk mendemonstrasikan pendefinisian dan pemanggilan fungsi.
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
//pendefinisianDanPemanggilanFungsi.cpp
#include <iostream>
#include <conio.h>
using namespace std;

double biaya_total(int jum_barang, double harga_barang);

int main( )
{
    double harga, bayar;
    int jumlah;

    cout << "Masukkan jumlah item yang dibeli: ";
    cin >> jumlah;
    cout << "Masukkan harga per item Rp. ";
    cin >> harga;

    bayar = biaya_total(jumlah, harga);

    cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(2);
    cout << "Sebanyak " << jumlah << " item dengan harga Rp. "
         << harga << ".\n"
         << "Pembayaran, termasuk pajak, adalah Rp. " << bayar
         << endl;

   getch();
    return 0;
}

double biaya_total(int jum_barang, double harga_barang)
{
    const double PERSEN_PAJAK = 0.05;
    double subtotal;

    subtotal = harga_barang * jum_barang;
    return (subtotal + subtotal*PERSEN_PAJAK);
}

Masukkan jumlah item yang dibeli: 10
Masukkan harga per item Rp. 25500
Sebanyak 10 item dengan harga Rp. 25500.00.
Pembayaran, termasuk pajak, adalah Rp. 267750.00

12.    Tulislah sebuah program C++ yang melibatkan penggunaan variabel global.
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
//variabelGlobal.cpp
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;

//Variabel global
const double PI = 3.14159;

double luas(double radius);

double volume(double radius);

int main( )
{
    double keduaRadius, luas_lingkaran, volume_sphere;

    cout << "Masukkan radius untuk kedua lingkaran\n"
         << "dan sphere (dalam cm): ";
    cin >> keduaRadius;

    luas_lingkaran = luas(keduaRadius);
    volume_sphere = volume(keduaRadius);

    cout << "Radius = " << keduaRadius << " cm\n"
         << "luas lingkaran = " << luas_lingkaran
         << " cm^2\n"
         << "Volume sphere = " << volume_sphere
               << " cm^3\n";

    getch();
    return 0;
}

double luas(double radius)
{
    return (PI * pow(radius, 2));
}

double volume(double radius)
{
    return ((4.0/3.0) * PI * pow(radius, 3));
}

Masukkan radius untuk kedua lingkaran
dan sphere (dalam cm): 25
Radius = 25 cm
luas lingkaran = 1963.49 cm^2
Volume sphere = 65449.8 cm^3

13.    Tulislah sebuah program C++ yang mendemonstrasikan pengoverloadan fungsi.
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
//pengoverloadanFungsi.cpp
#include <iostream>
#include <conio.h>

double rerata(double n1, double n2);
double rerata(double n1, double n2, double n3);

int main( )
{
    using namespace std;
    cout << "Rerata dari 2.0, 2.5, dan 3.0 adalah "
         << rerata(2.0, 2.5, 3.0) << endl;

    cout << "Rerata dari 4.5 dan 5.5 adalah "
         << rerata(4.5, 5.5) << endl;

    getch();
    return 0;
}

double rerata(double n1, double n2)
{
    return ((n1 + n2)/2.0);
}

double rerata(double n1, double n2, double n3)
{
    return ((n1 + n2 + n3)/3.0);
}

Rerata dari 2.0, 2.5, andand 3.0 adalah 2.5
Rerata dari 4.5 dan 5.5 adalah 5

14.    Tulislah sebuah program C++ yang melibatkan pemanggilan lewat referensi.
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
//pemanggilanLewatReferensi.cpp
#include <iostream>
#include <conio.h>

void baca_angka(int& masukan1, int& masukan2);
void tukar_nilai(int& variabel1, int& variabel2);
void tampil_hasil(int keluaran1, int keluaran2);

int main( )
{
    int angka_pertama, angka_kedua;

    baca_angka(angka_pertama, angka_kedua);
    tukar_nilai(angka_pertama, angka_kedua);
    tampil_hasil(angka_pertama, angka_kedua);

    getch();
    return 0;
}

void baca_angka(int& masukan1, int& masukan2)
{
    using namespace std;
    cout << "Masukkan dua integer: ";
    cin >> masukan1 >> masukan2;
}

void tukar_nilai(int& variabel1, int& variabel2)
{
    int temp;
    temp = variabel1;
    variabel1 = variabel2;
    variabel2 = temp;
}

void tampil_hasil(int keluaran1, int keluaran2)
{
    using namespace std;
    cout << "Dalam urutan terbalik, angka-angka tersebut adalah: "
         << keluaran1 << " " << keluaran2 << endl;
}

Masukkan dua integer: 23 45
Dalam urutan terbalik, angka-angka tersebut adalah: 45 23

15.    Tulislah sebuah program C++ yang melibatkan fungsi yang memanggil fungsi lain.
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
//fungsiPanggilFungsiLain.cpp
#include <iostream>
#include <conio.h>

void baca_masukan(int& masukan1, int& masukan2);
void tukar_nilai(int& variabel1, int& variabel2);
void susun(int& n1, int& n2);
void beri_hasil(int keluaran1, int keluaran2);

int main( )
{
    int angka_pertama, angka_kedua;

    baca_masukan(angka_pertama, angka_kedua);
    susun(angka_pertama, angka_kedua);
    beri_hasil(angka_pertama, angka_kedua);

    getch();
    return 0;
}

void baca_masukan(int& masukan1, int& masukan2)
{
    using namespace std;
    cout << "Masukkan dua integer: ";
    cin >> masukan1 >> masukan2;
}

void tukar_nilai(int& variabel1, int& variabel2)
{
    int temp;

    temp = variabel1;
    variabel1 = variabel2;
    variabel2 = temp;
}

void susun(int& n1, int& n2)
{
    if (n1 > n2)
        tukar_nilai(n1, n2);
}

void beri_hasil(int keluaran1, int keluaran2)
{
    using namespace std;
    cout << "Dalam tatanan menaik, kedua angka tersebut adalah: "
         << keluaran1 << " " << keluaran2 << endl;
}

Masukkan dua integer: 23 45
Dalam tatanan menaik, kedua angka tersebut adalah: 23 45



No comments:

Post a Comment