Tugas-Tugas Alpro

KHS

#include <iostream>

#include <string>


using namespace std;


struct MataKuliah {

    string namaMataKuliah;

    int sks;

    char nilai;

};


const int MAX_MATAKULIAH = 5;


void tampilkanIPK(const MataKuliah matkul[], int jumlahMatkul) {

    int totalSKS = 0;

    double totalBobotNilai = 0.0;

    int i = 0;


    while (i < jumlahMatkul) {

        int sks = matkul[i].sks;

        char nilai = matkul[i].nilai;


        totalSKS += sks;


        switch (nilai) {

            case 'A':

                totalBobotNilai += 4.0 * sks;

                break;

            case 'B':

                totalBobotNilai += 3.0 * sks;

                break;

            case 'C':

                totalBobotNilai += 2.0 * sks;

                break;

            case 'D':

                totalBobotNilai += 1.0 * sks;

                break;

            case 'E':

                totalBobotNilai += 0.0 * sks;

                break;

            default:

                cout << "Nilai tidak valid untuk mata kuliah: " << matkul[i].namaMataKuliah << endl;

                return;

        }


        i++;

    }


    double ipk = totalBobotNilai / totalSKS;


    cout << "IPK: " << ipk << endl;

}


int main() {

    MataKuliah matkul[MAX_MATAKULIAH];

    int jumlahMatkul;


    cout << "Masukkan jumlah mata kuliah: ";

    cin >> jumlahMatkul;


    cin.ignore(); // Mengabaikan karakter newline dalam buffer input


    int i = 0;

    while (i < jumlahMatkul) {

        cout << "Masukkan nama mata kuliah ke-" << (i + 1) << ": ";

        getline(cin, matkul[i].namaMataKuliah);


        cout << "Masukkan jumlah SKS mata kuliah ke-" << (i + 1) << ": ";

        cin >> matkul[i].sks;


        cout << "Masukkan nilai mata kuliah ke-" << (i + 1) << ": ";

        cin >> matkul[i].nilai;


        cin.ignore(); // Mengabaikan karakter newline dalam buffer input


        i++;

    }


    cout << endl;

    cout << "----- Kartu Hasil Studi -----" << endl;

    cout << endl;


    i = 0;

    while (i < jumlahMatkul) {

        cout << "Mata Kuliah ke-" << (i + 1) << ": " << matkul[i].namaMataKuliah << endl;

        cout << "SKS: " << matkul[i].sks << endl;

        cout << "Nilai: " << matkul[i].nilai << endl;

        cout << endl;


        i++;

    }


    cout << "-------------------------------" << endl;

    cout << endl;


    tampilkanIPK(matkul, jumlahMatkul);


    return 0;

}



ADT TABUNG

#include <iostream>
using namespace std;

class Tabung {
private:
    double jariJari;
    double tinggi;

public:
    // Konstruktor
    Tabung(double jariJari, double tinggi) {
        this->jariJari = jariJari;
        this->tinggi = tinggi;
    }

    // Getter dan setter
    double getJariJari() {
        return jariJari;
    }

    double getTinggi() {
        return tinggi;
    }

    void setJariJari(double jariJari) {
        this->jariJari = jariJari;
    }

    void setTinggi(double tinggi) {
        this->tinggi = tinggi;
    }

    // Menghitung volume tabung
    double hitungVolume() {
        return 3.14 * jariJari * jariJari * tinggi;
    }

    // Menghitung luas permukaan tabung
    double hitungLuasPermukaan() {
        return 2 * 3.14 * jariJari * (jariJari + tinggi);
    }
};

int main() {
    // Membuat objek tabung dengan jari-jari 2.5 dan tinggi 5.0
    Tabung tabung(2.5, 5.0);

    // Menggunakan objek tabung
    cout << "Jari-jari tabung: " << tabung.getJariJari() << endl;
    cout << "Tinggi tabung: " << tabung.getTinggi() << endl;
    cout << "Volume tabung: " << tabung.hitungVolume() << endl;
    cout << "Luas permukaan tabung: " << tabung.hitungLuasPermukaan() << endl;

    return 0;
}


FUNGSI DAN SORTING TABUNG

#include <iostream>
using namespace std;

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

// Fungsi untuk menghitung luas permukaan tabung
double hitungLuasPermukaan(double jariJari, double tinggi) {
    return 2 * 3.14 * jariJari * (jariJari + tinggi);
}

int main() {
    double jariJari, tinggi;

    cout << "Masukkan jari-jari tabung: ";
    cin >> jariJari;

    cout << "Masukkan tinggi tabung: ";
    cin >> tinggi;

    double volume = hitungVolume(jariJari, tinggi);
    double luasPermukaan = hitungLuasPermukaan(jariJari, tinggi);

    cout << "Volume tabung: " << volume << endl;
    cout << "Luas permukaan tabung: " << luasPermukaan << endl;

    return 0;
}

FUNGSI JAM

#include <iostream>
using namespace std;

class Jam {
private:
    int jam;
    int menit;
    int detik;

public:
    // Konstruktor
    Jam(int jam = 0, int menit = 0, int detik = 0) {
        setJam(jam);
        setMenit(menit);
        setDetik(detik);
    }

    // Setter
    void setJam(int jam) {
        this->jam = (jam >= 0 && jam < 24) ? jam : 0;
    }

    void setMenit(int menit) {
        this->menit = (menit >= 0 && menit < 60) ? menit : 0;
    }

    void setDetik(int detik) {
        this->detik = (detik >= 0 && detik < 60) ? detik : 0;
    }

    // Getter
    int getJam() const {
        return jam;
    }

    int getMenit() const {
        return menit;
    }

    int getDetik() const {
        return detik;
    }

    // Menampilkan waktu
    void tampilkanWaktu() const {
        cout << "Jam: " << jam << ", Menit: " << menit << ", Detik: " << detik <<endl;
    }
};

int main() {
    // Membuat objek Jam
    Jam waktu(10, 30, 45);

    // Menggunakan setter
    waktu.setJam(12);
    waktu.setMenit(15);
    waktu.setDetik(30);

    // Menggunakan getter dan menampilkan waktu
    cout << "Jam: " << waktu.getJam() << endl;
    cout << "Menit: " << waktu.getMenit() << endl;
    cout << "Detik: " << waktu.getDetik() << endl;

    // Menampilkan waktu menggunakan fungsi tampilkanWaktu()
    waktu.tampilkanWaktu();


    return 0;
}


HITUNG NILAI AKHIR

#include <iostream>
using namespace std;

// Fungsi untuk menghitung nilai akhir
double hitungNilaiAkhir(double nilaiUas, double nilaiTugas, double nilaiUts) {
    // Bobot masing-masing komponen nilai
    double bobotUas = 0.4;
    double bobotTugas = 0.3;
    double bobotUts = 0.3;

    double nilaiAkhir = (bobotUas * nilaiUas) + (bobotTugas * nilaiTugas) + (bobotUts * nilaiUts);
    return nilaiAkhir;
}

int main() {
    double nilaiUas, nilaiTugas, nilaiUts;

    // Menerima input nilai ujian, tugas, dan partisipasi
    cout << "Masukkan nilai Uas: ";
    cin >> nilaiUas;

    cout << "Masukkan nilai Tugas: ";
    cin >> nilaiTugas;

    cout << "Masukkan nilai Uts: ";
    cin >> nilaiUts;

    // Menghitung nilai akhir
    double nilaiAkhir = hitungNilaiAkhir(nilaiUas, nilaiTugas, nilaiUts);

    // Menampilkan nilai akhir
    cout << "Nilai akhir: " << nilaiAkhir << endl;

    return 0;
}



REKURSIF

#include <iostream>
using namespace std;

// Fungsi rekursif untuk penjumlahan
int penjumlahanRekursif(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return penjumlahanRekursif(a + 1, b - 1);
    }
}

// Fungsi rekursif untuk pengurangan
int penguranganRekursif(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return penguranganRekursif(a - 1, b - 1);
    }
}

// Fungsi rekursif untuk perkalian
int perkalianRekursif(int a, int b) {
    if (b == 0) {
        return 0;
    } else {
        return a + perkalianRekursif(a, b - 1);
    }
}

int main() {
    int a, b;

    cout << "Masukkan nilai a: ";
    cin >> a;

    cout << "Masukkan nilai b: ";
    cin >> b;

    // Memanggil fungsi rekursif untuk penjumlahan, pengurangan, dan perkalian
    int hasilPenjumlahan = penjumlahanRekursif(a, b);
    int hasilPengurangan = penguranganRekursif(a, b);
    int hasilPerkalian = perkalianRekursif(a, b);

    cout << "Hasil penjumlahan: " << hasilPenjumlahan << endl;
    cout << "Hasil pengurangan: " << hasilPengurangan << endl;
    cout << "Hasil perkalian: " << hasilPerkalian << endl;

    return 0;
}


POINTER

#include <iostream>
using namespace std;

int main() {
    const char* message = "Hello World!";

    // Menampilkan "Hello, World!" menggunakan pointer
    const char* p = message;
    while (*p != '\0') {
        cout << *p;
        p++;
    }
    cout << endl;

    return 0;
}



OOP

#include "booking_villa.h"
#include <iostream>
#include <fstream>

using namespace std;

void BokingVilla::tampilkanMenu()
{
    cout << "========== BOOKING VILLA ==========" << endl;
    cout << "1. Tambah Daftar Booking Villa" << endl;
    cout << "2. Lihat Daftar Booking Villa" << endl;
    cout << "3. Hapus Daftar Booking villa" << endl;
    cout << "4. Keluar" << endl;
    cout << "==================================" << endl;
    cout << "Pilih: ";
}

void BokingVilla::tambahBooking()
{
    string nama,tgl;
    int harga,lamaSewa;

    cout << "Nama : ";
    cin.ignore();
    getline(cin, nama);
    cout << "Harga : ";
    cin >> harga;
    cout << "Lama Sewa (per malam): ";
    cin >> lamaSewa;
    cin.ignore();
    cout << "Tanggal Booking (dd/mm/yyyy): ";
    getline (cin, tgl);

    ofstream file("booking_villa.txt", ios::app);
    if (file.is_open())
    {
        file <<"Nama: "<< nama << endl;
        file <<"Harga :"<< harga << endl;
        file << "Tanggal: "<< tgl << endl;
        file << "Lama sewa:"<< lamaSewa << endl;
        file.close();
        cout << "Booking berhasil ditambahkan." << endl;
    }
    else
    {
        cout << "Gagal membuka file." << endl;
    }
}

void BokingVilla::lihatBooking()
{
    ifstream file("booking_villa.txt");
    if (file.is_open())
    {
    string line;
        cout << "=== Booking Villa ===" << endl;
        while (getline(file, line))
        {
            cout << line <<endl;
        }
        file.close();
    }
    else
    {
        cout << "Gagal membuka file." << endl;
    }
}

void hapusData(string targetNama) {
    ifstream file("booking_villa.txt");
    ofstream temp("temp.txt");

    string line;
    bool found = false;

    while (getline(file, line)) {
        if (line.find("Nama: " + targetNama) != string::npos) {
            found = true;
            for (int i = 0; i < 3; i++) {
                getline(file, line); // Mengabaikan 3 baris data yang ingin dihapus
            }
        } else {
            temp << line << endl;
        }
    }

    file.close();
    temp.close();

    if (found) {
        remove("booking_villa.txt");
        rename("temp.txt", "booking_villa.txt");
        cout << "Data berhasil dihapus." << endl;
    } else {
        cout << "Data tidak ditemukan." << endl;
        remove("temp.txt");
    }
}


int main()
{
    BokingVilla bookingVilla;
    int pilihan;
    string data;

    do
    {
        bookingVilla.tampilkanMenu();
        cin >> pilihan;

        switch (pilihan)
        {
            case 1:
                bookingVilla.tambahBooking();
                break;
            case 2:
                bookingVilla.lihatBooking();
                break;
            case 3:
                cout << "Nama : ";
                cin >> data;
                hapusData(data);
                break;
            case 4:
                cout << "Terima kasih telah menggunakan program." << endl;
                break;
            default:
                cout << "Pilihan tidak valid." << endl;
                break;
        }
        cout << endl;
    } while (pilihan != 4);

    return 0;

}

// METHOD

#include <iostream>
#include <fstream>

class BokingVilla
{
public:
    void BookingVilla();
    void tambahBooking();
    void lihatBooking();
    void hapusBooking();
    void tampilkanMenu();
};



Komentar