Untitled
unknown
c_cpp
a year ago
6.3 kB
10
Indexable
#include <iostream>
#include <string>
#include <chrono>
#include <iomanip>
using namespace std;
// Fungsi iteratif untuk menghitung total biaya berdasarkan kWh
int hitung_kwh_iterative(int kwh) {
int cost = 0;
int arr_kwh[] = {450, 900};
int arr_cost[] = {4150, 4660, 4960};
for (int i = 0; i < kwh; i++) {
if (i < arr_kwh[0]) {
cost += arr_cost[0];
} else if (i >= arr_kwh[0] && i < arr_kwh[1]) {
cost += arr_cost[1];
} else {
cost += arr_cost[2];
}
}
return cost;
}
// Fungsi rekursif untuk menghitung total biaya berdasarkan kWh
int hitung_kwh_recursive(int kwh) {
int arr_kwh[] = {450, 900};
int arr_cost[] = {4150, 4660, 4960};
if (kwh <= 0) return 0;
if (kwh <= arr_kwh[0]) {
return arr_cost[0] + hitung_kwh_recursive(kwh - 1);
} else if (kwh > arr_kwh[0] && kwh <= arr_kwh[1]) {
return arr_cost[1] + hitung_kwh_recursive(kwh - 1);
} else {
return arr_cost[2] + hitung_kwh_recursive(kwh - 1);
}
}
void print_execution_table() {
using namespace chrono;
int test_values[] = {1000, 2000, 3000, 4000, 5000};
cout << left << setw(10) << "n" << setw(20) << "Recursive Time (ms)" << setw(20) << "Iterative Time (ms)" << endl;
cout << string(50, '-') << endl;
for (int n : test_values) {
auto start_recursive = high_resolution_clock::now();
hitung_kwh_recursive(n);
auto end_recursive = high_resolution_clock::now();
auto recursive_time = duration_cast<milliseconds>(end_recursive - start_recursive).count();
auto start_iterative = high_resolution_clock::now();
hitung_kwh_iterative(n);
auto end_iterative = high_resolution_clock::now();
auto iterative_time = duration_cast<milliseconds>(end_iterative - start_iterative).count();
cout << left << setw(10) << n << setw(20) << recursive_time << setw(20) << iterative_time << endl;
}
cout << "\nTekan enter untuk melanjutkan...";
cin.get();
}
void transaction(string history[][5], int& length_history) {
cout << "============================================" << endl;
cout << "| TRANSACTION |" << endl;
cout << "============================================" << endl;
int no_customer, kwh;
string nama_customer;
string metode_pembayaran[] = {"Transfer Bank", "Kartu Kredit", "E-Wallet"};
cout << "\nMasukkan Nomor Customer : ";
cin >> no_customer;
cout << "Masukkan Nama Customer : ";
cin >> nama_customer;
cout << "Masukkan Jumlah Kwh : ";
cin >> kwh;
// Menggunakan metode iteratif secara default
int total_biaya = hitung_kwh_iterative(kwh);
cout << "\nTotal Biaya per-kWh : RP" << total_biaya << endl;
cout << "============================================" << endl;
cout << "| Metode Pembayaran |" << endl;
cout << "============================================" << endl;
for (int i = 0; i < sizeof(metode_pembayaran) / sizeof(*metode_pembayaran); i++) {
cout << i + 1 << ". " << metode_pembayaran[i] << endl;
}
int pilihan_metode = 0;
cout << "\nPilih metode pembayaran : ";
cin >> pilihan_metode;
// Menambahkan transaksi ke dalam riwayat
history[length_history][0] = to_string(no_customer);
history[length_history][1] = nama_customer;
history[length_history][2] = to_string(kwh);
history[length_history][3] = to_string(total_biaya); // biaya kwh
history[length_history][4] = metode_pembayaran[pilihan_metode - 1]; // metode pembayaran
length_history++; // Update panjang riwayat
}
void tampilkan_riwayat(string history[][5], int length_history) {
cout << "============================================" << endl;
cout << "| Riwayat Transaksi |" << endl;
cout << "============================================" << endl;
if (length_history == 0) {
cout << "Tidak ada riwayat transaksi.\n";
return;
}
for (int i = 0; i < length_history; i++) {
if (history[i][0] != "") {
cout << "Nomor Customer : " << history[i][0] << endl;
cout << "Nama Customer : " << history[i][1] << endl;
cout << "Jumlah Kwh : " << history[i][2] << endl;
cout << "Biaya per-Kwh : " << history[i][3] << endl;
cout << "Metode Pembayaran: " << history[i][4] << endl;
cout << "-----------------------------\n";
}
}
}
int main() {
string history[15][5] = {};
int length_history = 0;
int menu;
do {
cout << "============================================" << endl;
cout << "| MENU |" << endl;
cout << "============================================" << endl;
cout << "1. Transaction\n";
cout << "2. Riwayat Transaksi\n";
cout << "3. Cetak Tabel Perbandingan Waktu\n";
cout << "4. Keluar\n\n";
cout << "============================================" << endl;
cout << endl << "Pilih Menu : ";
cin >> menu;
cin.ignore(); // Untuk membersihkan buffer setelah input angka
system("clear");
switch (menu) {
case 1:
transaction(history, length_history);
system("clear");
break;
case 2:
tampilkan_riwayat(history, length_history);
cout << "\nTekan enter untuk melanjutkan...";
cin.get();
system("clear");
break;
case 3:
print_execution_table();
cout << "\nTekan enter untuk melanjutkan...";
cin.get();
system("clear");
break;
case 4:
exit(0);
break;
default:
cout << "\nPilihan tidak terdaftar\n\n";
cin.get();
system("clear");
break;
}
} while (menu != 4);
return 0;
}
Editor is loading...
Leave a Comment