Senin, 25 Maret 2019

[Studi kasus] Menghitung Tiket, Menggunakan Percabangan, Array, Struct, Procedure dan Fungsi

[Studi kasus] Menghitung Tiket, Menggunakan Percabangan, Array, Struct, Procedure dan Fungsi

Studi Kasus


Ada 2 orang mahasiswa UTY yang akan pulang kampung ke 2 kampung halaman yang berbeda. Mahasiswa pertama akan pulang ke Jakarta, sedangkan mahasiswa kedua akan pulang ke Purwokerto. Kedua mahasiswa tersebut akan pulang naik kereta api, dimana tarif tiket kereta api Yogyakarta – Jakarta Rp 300.000, sedangkan Yogyakarta – Purwokerto seharga Rp 90.000.

Saat menaiki kereta, masing – masing orang akan ditanya berapa jumlah barang bawaan yang dibawa, lengkap dengan berat masing – masing barang. Jika total berat barang bawaan melebihi 20 kg maka akan dikenai biaya tambahan sebesar Rp 5.000 per kilogram. Program akan menanyakan apakah ada promo tiket, jika ada maka program akan meminta inputan diskon dalam satuan persen (%).

Buatlah program untuk menghitung total biaya mudik masing – masing orang sesuai kasus di atas dengan memanfaatkan percabangan, array, struct, procedure(void) dan fungsi (return). Program akan meminta inputan untuk mengulangi apabila proses telah selesai.


Source Code


#include <iostream>
#define jakarta 300000
#define purwokerto 90000
using namespace::std;

struct data{
    double count=0, harga, harga2, jumlah, denda, prm;
    float berat[20], total=0;
    char barang[20][20];
};
data dt;

void garis(){
 cout<<"----------------------------------------"<<endl;
}

void input(){
    dt.count++;
    dt.total = 0;
    cout<<"Masukkan data orang ke-"<<dt.count<<endl;
    cout<<"Masukkan jumlah barang bawaan : "; cin>>dt.jumlah;
    for(int i = 0; i < dt.jumlah; i++){
        cout<<"Masukkan Berat Barang ke-"<<i+1<<": "; cin>>dt.berat[i];
        dt.total=dt.total+dt.berat[i];
    }
    cout<<"Total bawaan anda : "<<dt.total<<endl;
    if(dt.total > 20)
        dt.denda = (dt.total - 20) * 5000;
    else
        dt.denda = 0;
    cout<<"Denda : "<<dt.denda<<endl;
}

void promo(){
    char pro;
 cout<<"Ada promo?(y/n)"; cin>>pro;
    if(pro == 'y' || pro == 'Y'){
        cout<<"Masukkan besar promo (%) : "; cin>>dt.prm;
        dt.prm = dt.prm/100;
    }
    else
        dt.prm = 0;
}

double tarif(){
 double tiket;
    if(dt.count==1)
        tiket = jakarta;
    else
        tiket = purwokerto;
    return tiket;
}

double hitung(double a){
 return dt.denda + a;
}

void tampil(){
 dt.harga = tarif();
    cout<<"Harga Tiket : "<<dt.harga<<endl;
    cout<<"Promo : "<<dt.prm<<endl;
    dt.harga = dt.harga - (dt.harga * dt.prm);
    cout<<"Harga Tiket-Promo: "<<dt.harga<<endl;
    dt.total = hitung(dt.harga);
    cout<<"Total Baiaya Perjalanan : "<<dt.total<<endl;
}

main(){
 char  ulangi;
    do{
        dt.count=0;
   //-- Orang ke 1 --
        garis();
        cout<<"           K E  J A K A R T A"<<endl;
        garis();
        input();
        promo();
        tampil();
        cout<<endl;
   //--Orang ke 2 --
        garis();
        cout<<"        K E  P U R W O K E R T O"<<endl;
        garis();
        input();
        promo();
        tampil();
        garis();
        cout<<"ulangi? (y/n) ";cin>>ulangi;
    }while(ulangi=='y' || ulangi=='Y');
}


Running Program


[Studi kasus] Menghitung Tiket, Menggunakan Percabangan, Array, Struct, Procedure dan Fungsi