Quick actions

cmd+k|ctrl+k

Navigation

Languages

UAS Algoritma - Ananda RA

Snippet info

Language

Cpp

Visibility

public

Author

anandara7891

Created

2026-01-21T07:07:23.547657Z

Updated

2026-01-21T13:59:05.556937Z

#include <iostream>
#include <string.h>
#include <iomanip>

// UAS Algoritma Dan Struktur Data
//Ananda Rakhma Aulia - 3420220024

using namespace std;

void garis(int p) {
    int i = 0;
    while (i < p) {
        cout<<"="; i++;} cout<<endl; // (<- looping while)
}

string formatRupiah(long nominal) {
    string angka = to_string(nominal);
    int n = angka.length();
    int hitung = 0;
    string hasil = "";

    for (int i = n - 1; i >= 0; i--) {
        hasil = angka[i] + hasil;
        hitung++;
        if (hitung % 3 == 0 && i != 0) {
            hasil = "." + hasil;
        }
    }
    return hasil;
}

struct {
  int jml;
  string nama;
} structKasir; //(<- struct function)

void author(string nama, string nim, string email) {
    garis(40);
    cout<<"Nama  : "<<nama<<endl; //(<- cout function)
    cout<<"NIM   : "<<nim<<endl; //(<- cout function)
    cout<<"Email : "<<email<<endl; //(<- cout function)
}

void judul() {
    garis(40);
    puts("FLOWERS HOTEL"); //(<- puts function)
    puts("Jl. Raya Hankam Jatirahayu Bekasi"); //(<- puts function)
    garis(40); //(<-function NOT return value without parameter)
}

void ketentuan() {
    puts("| Kelas | Nama Kelas | Biaya Per Malam |");
    garis(40);
    puts("| 1     | VIP        | Rp. 1.000.000   |");
    puts("| 2     | Reguler    | Rp. 800.000     |");
    puts("| 3     | Ekonomi    | Rp. 600.000     |");
    garis(40);
    puts("| Kode Kamar | Nama Kamar              |");
    garis(40);
    puts("| E          | Edelweiss               |");
    puts("| M          | Magnolia                |");
    puts("| O          | Orchid                  |");
    garis(40);
    cout<<"KETENTUAN"<<endl;
    garis(40);
    puts("Harus Terdapat:");
    puts("fungsi STRUCT.");
    puts("fungsi cout, cin, endl, printf, scanf.");
    puts("function return value dengan parameter.");
	puts("function return value TANPA parameter.");
	puts("function NOT return value dengan parameter.");
	puts("function NOT return value TANPA parameter.");
	puts("function yang memanggil function lain.");
	puts("variable bertipe array.");
	puts("struktur IF.");
	puts("struktur SWITCH CASE.");
	puts("looping while dan looping for.");
	puts("Class dengan Variable Private.");
	puts("Class dengan Prototipe Function.");
    garis(65);
	puts("Subtotal adalah Harga Per Malam x Lama Menginap.");
	puts("Diskon 10% dari Subtotal jika Lama Menginap lebih dari 10 hari.");
	puts("Diskon 5% dari Subtotal jika Lama Menginap lebih dari 5 hari.");
    garis(65);
}

class penyewa {
    private:
        string nama;
        char kd_kelas, kd_kamar;
        int lama; //(<- class with variable private function)
        
    public:
   	    void set_nilai(string nm, char kdKelas, char kdKamar, int lm); //(<- class with prototipe function)
   	    string get_nama() {
   	        return nama;
   	    }
   	    string get_kelas(); //(<- class with prototipe function)
   	    string get_kamar(); //(<- class with prototipe function)
   	    long get_harga(); //(<- class with prototipe function)
   	    int get_lama() {
   	        return lama;
   	    }
};
void penyewa::set_nilai(string nm, char kdKelas, char kdKamar, int lm) {
    nama = nm; kd_kelas = kdKelas; kd_kamar = kdKamar; lama = lm;
}

// if else structure
string penyewa::get_kelas() {
    if (kd_kelas == '1') {
        return "VIP";
    } else if (kd_kelas == '2') {
        return "REGULER";
    } else if (kd_kelas == '3') {
        return "EKONOMI";
    } else {
        return "";
    }   	        
}
// switch case structure
string penyewa::get_kamar() {
    switch (kd_kamar) {
        case 'E': case 'e':
         	return "EDELWEISS";
            break;
      	case 'M': case 'm':
            return "MAGNOLIA";
            break;
        case 'O': case 'o':
         	return "ORCHID";
            break;
        default:
            return "";
            break;
    }
}

long penyewa::get_harga() {
    if (kd_kelas == '1') {
        return 1000000;
    } else if (kd_kelas == '2') {
        return 800000;
    } else if (kd_kelas == '3') {
        return 600000;
    } else {
        return 0;
    }   	        
} //(<- function return value without parameter)
long subtotal(int lama, long harga) {
    return lama * harga;
} //(<- function return value with parameter)
long hitung_tobay(long subtotal, long diskon) {
    return subtotal - diskon;
} //(<- function return value with parameter)
long hitung_diskon(long subtotal, int lama) {
    if(lama > 10) {
        return 0.1 * subtotal;
    } else if(lama > 5) {
        return 0.05 * subtotal;
    } else {
        return 0;
    }
}

int main() {
    judul();
    ketentuan();
    cout<<endl;
    printf("Input Nama Kasir : <input>"); //(<- printf function)
    cin>>structKasir.nama;cout<<endl; //(<- cin function)
    printf("Jumlah Data      : <input>");
    scanf("%d", &structKasir.jml);cout<<endl<<endl; //(<- scanf function)
    int i, lama_sewa;
    string nama;
    char kodekelas, kodekamar;
    penyewa objpenyewa[10]; //(<- variabel bertipe array)
    for(i=1;i<=structKasir.jml;i++) {
        printf("Data Ke - %d",i); cout<<endl;
        printf("Nama Penyewa       : <input>"); cin>>nama; cout<<endl;
        printf("Kode Kelas [1/2/3] : <input>"); cin>>kodekelas; cout<<endl;
        printf("Kode Kamar [E/M/O] : <input>"); cin>>kodekamar; cout<<endl;
        printf("Lama Sewa          : <input>"); cin>>lama_sewa; cout<<endl;
        objpenyewa[i].set_nilai(nama, kodekelas, kodekamar, lama_sewa);
        cout<<endl; //(<- looping for)
    }
    judul();
	cout<<"Nama Kasir  : "<<structKasir.nama<<endl;
	cout<<"Jumlah Data : "<<structKasir.jml<<endl;
    garis(94);
    cout<<"| No | Nama Penyewa | Kelas   | Kamar     | Harga   | Lama |"; 
    cout<<" Subtotal| Diskon | Total Bayar |"<<endl;
    garis(94);
    long grand_total = 0;
    for(i=1;i<=structKasir.jml;i++) {
        cout<<"| "<<setiosflags(ios::left)<<setw(3)<<i;
        cout<<"| "<<setw(13)<<objpenyewa[i].get_nama();
        cout<<"| "<<setw(8)<<objpenyewa[i].get_kelas();
        cout<<"| "<<setw(10)<<objpenyewa[i].get_kamar();
        long harga = objpenyewa[i].get_harga();
        cout<<"| "<<setw(8)<<harga;
        int lama = objpenyewa[i].get_lama();
        cout<<"| "<<setw(5)<<lama;
        long subttl = subtotal(harga, lama);    
        cout<<"| "<<setw(8)<<subttl;
        long diskon = hitung_diskon(subttl, lama);
        cout<<"| "<<setw(8)<<diskon;
        long tobay = hitung_tobay(subttl, diskon);
        cout<<"| "<<setw(12)<<tobay<<"|";
        grand_total = grand_total + tobay;
        cout<<endl;
    }
    garis(94);
    
    cout<<"GRAND TOTAL: Rp"<<formatRupiah(grand_total)<< endl;
    author("Ananda Rakhma Aulia","3420220024","[email protected]");
    return 0;
}

INFO