Tabung dengan ADT, Function, Search, Sorting

 Program C++ untuk mencari Volume dan Luas Permukaan sebuah tabung dengan menggunakan ADT(Abstrak Data Type), Function, Void, Searching, Sorting.

Berikut Kodenya : 



#include <iostream>
#include <cmath>
using namespace std;

#define _USE_MATH_DEFINES // Untuk mengakses konstanta matematika seperti PI

struct tabung
{
    int indeks_asli; // Bidang baru untuk menyimpan indeks asli dari tabung
    float tinggi;
    float jari;
    float luas_permukaan;
    float volume;
};

void masukan();
void cariVolume(tabung tabung[], int x);
void cariLuasPermukaan(tabung tabung[], int x);
void cariTabung(tabung tabung[], int x);
int cariTabungKe_i(tabung tabung[], int x, int indeks);
void sorting_volume(tabung tabung[], int x);
void sorting_luas(tabung tabung[], int x);
void printArray_volume(tabung tabung[], int x);
void printArray_luas(tabung tabung[], int x);

int main()
{
    masukan();
    return 0;
}

void masukan()
{
    tabung tabung[10];
    int x;
    char pilihan;

    do
    {
        cout << "============================================== " << endl;
        cout << "                   TABUNG                      " << endl;
        cout << "============================================== " << endl;
        cout << "Mencari Volume = 1 \nMencari Luas Permukaan = 2 \nCari Tabung = 3 \nKeluar = 4 " << endl;
        cout << "Pilih Menu (1/2/3/4) : ";
        cin >> pilihan;

        switch (pilihan)
        {
        case '1':
            cariVolume(tabung, x);
            break;
        case '2':
            cariLuasPermukaan(tabung, x);
            break;
        case '3':
            cariTabung(tabung, x);
            break;
        case '4':
            cout << "Terima kasih, program selesai." << endl;
            break;
        default:
            cout << "Masukan pilihan antara 1, 2, 3, atau 4" << endl;
            break;
        }

        // Tahan sejenak sebelum kembali ke menu utama
        if (pilihan >= '1' && pilihan <= '3')
        {
            cout << "Tekan Enter untuk kembali ke menu utama...";
            cin.ignore();
            cin.get();
        }

    } while (pilihan != '4');
}

void cariVolume(tabung tabung[], int x)
{
    cout << "=======================================" << endl;
    cout << "              Volume Tabung " << endl;
    cout << "=======================================" << endl;
    cout << "Ada berapa banyak Tabung : ";
    cin >> x;

    for (int i = 0; i < x; i++)
    {
        tabung[i].indeks_asli = i;
        cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
        cin >> tabung[i].jari;
        cout << "Masukan Tinggi tabung " << i + 1 << " : ";
        cin >> tabung[i].tinggi;
        tabung[i].volume = M_PI * (tabung[i].jari * tabung[i].jari) * tabung[i].tinggi;
    }

    sorting_volume(tabung, x);
    printArray_volume(tabung, x);
}

void cariLuasPermukaan(tabung tabung[], int x)
{
    cout << "=======================================" << endl;
    cout << "       Luas Permukaan Tabung " << endl;
    cout << "=======================================" << endl;
    cout << "Ada berapa banyak Tabung : ";
    cin >> x;

    for (int i = 0; i < x; i++)
    {
        tabung[i].indeks_asli = i;
        cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
        cin >> tabung[i].jari;
        cout << "Masukan Tinggi tabung " << i + 1 << " : ";
        cin >> tabung[i].tinggi;
        tabung[i].luas_permukaan = 2 * M_PI * tabung[i].jari * (tabung[i].jari + tabung[i].tinggi);
    }

    sorting_luas(tabung, x);
    printArray_luas(tabung, x);
}

void cariTabung(tabung tabung[], int x)
{
    int nomor_tabung;
    cout << "Masukkan nomor indeks tabung yang ingin dicari: ";
    cin >> nomor_tabung;

    int indeks_tabung = cariTabungKe_i(tabung, x, nomor_tabung);
    if (indeks_tabung != -1)
    {
        // Tabung ditemukan
        cout << "Tabung ke-" << nomor_tabung << " ditemukan pada indeks: " << indeks_tabung << endl;
        cout << "Jari-jari: " << tabung[indeks_tabung].jari << endl;
        cout << "Tinggi: " << tabung[indeks_tabung].tinggi << endl;
        cout << "Volume: " << tabung[indeks_tabung].volume << " cm^3" << endl;
        cout << "Luas Permukaan: " << tabung[indeks_tabung].luas_permukaan << " cm^2" << endl;
    }
    else
    {
        cout << "Tabung ke-" << nomor_tabung << " tidak ditemukan." << endl;
    }
}

int cariTabungKe_i(tabung tabung[], int x, int indeks)
{
    for (int i = 0; i < x; i++)
    {
        if (tabung[i].indeks_asli + 1 == indeks)
        {
            return i;
        }
    }
    return -1; // Mengembalikan -1 jika tabung dengan indeks yang ditentukan tidak ditemukan
}

void sorting_volume(tabung tabung[], int x)
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].volume > tabung[j + 1].volume)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}

void sorting_luas(tabung tabung[], int x)
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}

void printArray_volume(tabung tabung[], int x)
{
    cout << "Urutan dari yang terkecil : " << endl;
    for (int i = 0; i < x; i++)
    {
        cout << "Tabung " << tabung[i].indeks_asli + 1 << " : " << tabung[i].volume << " cm^3" << endl;
    }
    cout << endl;
}

void printArray_luas(tabung tabung[], int x)
{
    cout << "Urutan dari yang terkecil : ";
    for (int i = 0; i < x; i++)
    {
        cout << "Tabung " << tabung[i].indeks_asli + 1 << " : " << tabung[i].luas_permukaan << " cm^2";
        if (i != x - 1)
            cout << ", ";
    }
    cout << endl;
}
}
  • Untuk Menu Utama
Untuk menu utama , disini menggunakan funtion masukan() :
void masukan()
{
    tabung tabung[10];
    int x;
    char pilihan;

    do
    {
        cout << "============================================== " << endl;
        cout << "                   TABUNG                      " << endl;
        cout << "============================================== " << endl;
        cout << "Mencari Volume = 1 \nMencari Luas Permukaan = 2 \nCari Tabung = 3 \nKeluar = 4 " << endl;
        cout << "Pilih Menu (1/2/3/4) : ";
        cin >> pilihan;

        switch (pilihan)
        {
        case '1':
            cariVolume(tabung, x);
            break;
        case '2':
            cariLuasPermukaan(tabung, x);
            break;
        case '3':
            cariTabung(tabung, x);
            break;
        case '4':
            cout << "Terima kasih, program selesai." << endl;
            break;
        default:
            cout << "Masukan pilihan antara 1, 2, 3, atau 4" << endl;
            break;
        }

        // Tahan sejenak sebelum kembali ke menu utama
        if (pilihan >= '1' && pilihan <= '3')
        {
            cout << "Tekan Enter untuk kembali ke menu utama...";
            cin.ignore();
            cin.get();
        }

    } while (pilihan != '4');
}
}
  • Mencari Volume
Untuk mencari volume tabung , disini menggunakan funtion cariVolume(tabung tabung[], int x)


void cariVolume(tabung tabung[], int x)
{
    cout << "=======================================" << endl;
    cout << "              Volume Tabung " << endl;
    cout << "=======================================" << endl;
    cout << "Ada berapa banyak Tabung : ";
    cin >> x;

    for (int i = 0; i < x; i++)
    {
        tabung[i].indeks_asli = i;
        cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
        cin >> tabung[i].jari;
        cout << "Masukan Tinggi tabung " << i + 1 << " : ";
        cin >> tabung[i].tinggi;
        tabung[i].volume = M_PI * (tabung[i].jari * tabung[i].jari) * tabung[i].tinggi;
    }

    sorting_volume(tabung, x);
    printArray_volume(tabung, x);
}
  • Mencari Luas permukaan
Untuk mencari luas tabung , disini menggunakan funtion void cariLuasPermukaan(tabung tabung[], int x)


void cariLuasPermukaan(tabung tabung[], int x)
{
    cout << "=======================================" << endl;
    cout << "       Luas Permukaan Tabung " << endl;
    cout << "=======================================" << endl;
    cout << "Ada berapa banyak Tabung : ";
    cin >> x;

    for (int i = 0; i < x; i++)
    {
        tabung[i].indeks_asli = i;
        cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
        cin >> tabung[i].jari;
        cout << "Masukan Tinggi tabung " << i + 1 << " : ";
        cin >> tabung[i].tinggi;
        tabung[i].luas_permukaan = 2 * M_PI * tabung[i].jari * (tabung[i].jari + tabung[i].tinggi);
    }

    sorting_luas(tabung, x);
    printArray_luas(tabung, x);
}
  • Mencari Tabung
Untuk mencari tabung yang berisi volume dan luas permukaan dari tabung berdasarkan index, disini menggunakan funtion void cariLuasPermukaan(tabung tabung[ ], int x) dan int cariTabungKe_i(tabung tabung[ ], int x, int indeks)


void cariTabung(tabung tabung[], int x)
{
    int nomor_tabung;
    cout << "Masukkan nomor indeks tabung yang ingin dicari: ";
    cin >> nomor_tabung;

    int indeks_tabung = cariTabungKe_i(tabung, x, nomor_tabung);
    if (indeks_tabung != -1)
    {
        // Tabung ditemukan
        cout << "Tabung ke-" << nomor_tabung << " ditemukan pada indeks: " << indeks_tabung << endl;
        cout << "Jari-jari: " << tabung[indeks_tabung].jari << endl;
        cout << "Tinggi: " << tabung[indeks_tabung].tinggi << endl;
        cout << "Volume: " << tabung[indeks_tabung].volume << " cm^3" << endl;
        cout << "Luas Permukaan: " << tabung[indeks_tabung].luas_permukaan << " cm^2" << endl;
    }
    else
    {
        cout << "Tabung ke-" << nomor_tabung << " tidak ditemukan." << endl;
    }
}

int cariTabungKe_i(tabung tabung[], int x, int indeks)
{
    for (int i = 0; i < x; i++)
    {
        if (tabung[i].indeks_asli + 1 == indeks)
        {
            return i;
        }
    }
    return -1; // Mengembalikan -1 jika tabung dengan indeks yang ditentukan tidak ditemukan
}
  • Sorting Tabung
Untuk mensorting tabung berdasarkan volume atau luas permukaan dengan index mengikuti urutan dari yang terkecil, disini menggunakan funtion void void sorting_volume(tabung tabung[ ], int x) atau void sorting_luas(tabung tabung[ ], int x)


void sorting_volume(tabung tabung[], int x) //sorting berdasarkan volume
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].volume > tabung[j + 1].volume)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}

void sorting_luas(tabung tabung[], int x) // sorting berdasarkan luas permukaan
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}
  • Menampilkan Hasil
Untuk menampilkan hasil operasi menghitung volume dan luas permukaan tabung, disini menggunakan funtion void printArray_volume(tabung tabung[ ], int x) atau void printArray_luas(tabung tabung[ ], int x)


void sorting_volume(tabung tabung[], int x) //sorting berdasarkan volume
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].volume > tabung[j + 1].volume)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}

void sorting_luas(tabung tabung[], int x) // sorting berdasarkan luas permukaan
{
    for (int i = 0; i < x - 1; i++)
    {
        for (int j = 0; j < x - i - 1; j++)
        {
            if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
            {
                tabung temp = tabung[j];
                tabung[j] = tabung[j + 1];
                tabung[j + 1] = temp;
            }
        }
    }
}

Comments

Popular posts from this blog

SEQUENCE

CONTOH PROGRAM C++

PROGRAMMING