Tabung (ADT, Function, Sorting)

 Tabung

- Menghitung luas
- Menghitung volume
- Mengurutkan luas dan volume dari yang terkecil

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// ADT Tabung
struct Tabung {
    double jari_jari;
    double tinggi;
    double luas;
    double volume;
};

// Fungsi menghitung luas tabung
double hitungLuas(double jari_jari) {
    return 2 * 3.14 * jari_jari * jari_jari;
}

// Fungsi menghitung volume tabung
double hitungVolume(double jari_jari, double tinggi) {
    return 3.14 * jari_jari * jari_jari * tinggi;
}

// Fungsi pencarian tabung berdasarkan luas terkecil
int cariLuasTerkecil(const vector<Tabung>& tabung) {
    int indexTerkecil = 0;
    double luasTerkecil = tabung[0].luas;
    
    for (int i = 1; i < tabung.size(); i++) {
        if (tabung[i].luas < luasTerkecil) {
            luasTerkecil = tabung[i].luas;
            indexTerkecil = i;
        }
    }
    
    return indexTerkecil;
}

// Fungsi pencarian tabung berdasarkan volume terkecil
int cariVolumeTerkecil(const vector<Tabung>& tabung) {
    int indexTerkecil = 0;
    double volumeTerkecil = tabung[0].volume;
    
    for (int i = 1; i < tabung.size(); i++) {
        if (tabung[i].volume < volumeTerkecil) {
            volumeTerkecil = tabung[i].volume;
            indexTerkecil = i;
        }
    }
    
    return indexTerkecil;
}

// Fungsi untuk mengurutkan tabung berdasarkan luas
bool compareLuas(const Tabung& a, const Tabung& b) {
    return a.luas < b.luas;
}

// Fungsi untuk mengurutkan tabung berdasarkan volume
bool compareVolume(const Tabung& a, const Tabung& b) {
    return a.volume < b.volume;
}

int main() {
    int jumlahTabung;
    vector<Tabung> tabung;
    
    // Input jumlah tabung
    cout << "Masukkan jumlah tabung: ";
    cin >> jumlahTabung;
    
    int i = 0;
    do {
        Tabung t;
        
        cout << "\nTabung " << i + 1 << ":\n";
        cout << "Masukkan jari-jari: ";
        cin >> t.jari_jari;
        cout << "Masukkan tinggi: ";
        cin >> t.tinggi;
        
        t.luas = hitungLuas(t.jari_jari);
        t.volume = hitungVolume(t.jari_jari, t.tinggi);
        
        tabung.push_back(t);
        
        i++;
    } while (i < jumlahTabung);
    
    // Mengurutkan tabung berdasarkan luas terkecil
    sort(tabung.begin(), tabung.end(), compareLuas);
    
    // Menampilkan hasil pengurutan luas
    cout << "\nHasil pengurutan berdasarkan luas terkecil:\n";
    for (const auto& t : tabung) {
        cout << "Luas: " << t.luas << ", Volume: " << t.volume << "\n";
    }
    
    // Mengurutkan tabung berdasarkan volume terkecil
    sort(tabung.begin(), tabung.end(), compareVolume);
    
    // Menampilkan hasil pengurutan volume
    cout << "\nHasil pengurutan berdasarkan volume terkecil:\n";
    for (const auto& t : tabung) {
        cout << "Luas: " << t.luas << ", Volume: " << t.volume << "\n";
    }
    
    return 0;
}

Komentar

Postingan Populer