Quick actions

cmd+k|ctrl+k

Navigation

Languages

Tugas 14.1 - Algoritma Struktur Data

Snippet info

Language

Cpp

Visibility

public

Author

anandara7891

Created

2026-01-10T06:27:09.432296Z

Updated

2026-02-05T07:36:44.566617Z

#include <iostream>
#include <string.h>
using namespace std;

// Ananda Rakhma Aulia
// 3420220024

struct Menu{
    string kode;
    string jenis;
    int harga;
};

struct Transaksi {
    string kode;
    string jenis;
    int harga;
    int jumlah;
    int total;
};

Menu menu[] = {
    {"D", "Dada", 13000},
    {"P", "Paha", 8000},
    {"S", "Sayap", 11000},
};

Transaksi transaksi[100];
int totalTransaksi = 0;

const int menuSize = sizeof(menu) / sizeof(menu[0]);
void garis(int panjang) {
    int i;
    for(i = 0; i <= panjang; i++) {
        printf("=");
    }
    cout << endl;
}

void author() {
    cout << "Nama  : Ananda Rakhma Aulia" << endl;
    cout << "NIM   : 3420220024" << endl;
    cout << "Email : [email protected]" << endl;
}

void judul() {
    garis(51);
    cout << "AMANAH FRIED CHICKEN - JATIRAHAYU\n";
}

void daftarMenu() {
    garis(51);
    cout << "| Kode  | Jenis | Harga |\n";
    garis(51);
    for (int i = 0; i < menuSize; i++) {
        cout << "| " << menu[i].kode << "\t| " << menu[i].jenis 
             << "\t| " << menu[i].harga << "\t|\n";
    }
    garis(51);
}

void ketentuan() {
    printf("KETENTUAN SOAL\n");
    printf("Harus Terdapat Function Return Value Dengan Parameter\n");
    printf("Harus Terdapat Function Return Value Tanpa Parameter\n");
    printf("Harus Terdapat Function NOT Return Value Dengan Parameter\n");
    printf("Harus Terdapat Function NOT Return Value Tanpa Parameter\n");
    printf("Harus Terdapat Function Yang Memanggil Function Lain\n");
    printf("Harus Terdapat Variabel Bertipe Array\n");
    printf("Harus Terdapat Struktur IF\n");
    printf("Harus Terdapat Struktur Switch Case\n");
    printf("Harus Menggunakan Looping\n");
    garis(51);
}

void cetakTransaksi() {
    garis(51);
    printf("| %s | %s | %-10s | %-6s | %s | %-s |\n", 
    "No", "Kode", "Jenis", "Harga", "Jumlah", "Total");
    garis(51);
    int totalBayar = 0;
    for (int i = 0; i < totalTransaksi; i++) {
        printf("| %-2d | %-4s | %-10s | %-6d | %-6d | %-5d |\n", i + 1, 
        transaksi[i].kode.c_str(), transaksi[i].jenis.c_str(), 
        transaksi[i].harga, transaksi[i].jumlah, transaksi[i].total);
        totalBayar += transaksi[i].total; 
    }

    int pajak = totalBayar * 0.1;
    int grandTotal = totalBayar + pajak;
    
    garis(51);
    printf("Total Bayar : %d \n", totalBayar);
    printf("Pajak       : %d \n", pajak);
    printf("Grand Total : %d \n", grandTotal);
    garis(51);
}

int cariHarga(string kode) {
    for (int i = 0; i < menuSize; i++) {
        if (menu[i].kode == kode) {
            return menu[i].harga;
        }
    }
    return 0;
}

string cariJenis(string kode) {
    switch (kode[0]) {
        case 'D':
            return "Dada";
        case 'P':
            return "Paha";
        case 'S':
            return "Sayap";
        default:
            return "Kode Salah";
    }
}

void inputKodeBarang(int jumlahBeli, int i = 0) {
    if (i >= jumlahBeli) return;
    string kodeBarang, kodeBarangAsli; 
    int jumlahBarang;
    cout << "\nData ke-" << (i + 1);
    cout << "\nMasukan kode [D][P][S]: <input>";
    cin >> kodeBarang;
    kodeBarangAsli = kodeBarang;
    kodeBarang[0] = toupper(kodeBarang[0]);
    cout << "\nJumlah beli: <input>\n";
    cin >> jumlahBarang;
    transaksi[i].kode = kodeBarangAsli;
    transaksi[i].jenis = cariJenis(kodeBarang);
    transaksi[i].harga = cariHarga(kodeBarang);
    transaksi[i].jumlah = jumlahBarang;
    transaksi[i].total = transaksi[i].harga * jumlahBarang;
    totalTransaksi++; 
    inputKodeBarang(jumlahBeli, i + 1);
}

int main() {
    judul();
    daftarMenu();
    ketentuan();
    string namaPembeli;
    int jumlahBeli;
    cout << "Masukan nama pembeli: <input>" << endl;
    cin >> namaPembeli;
    cout << "Masukan jumlah beli: <input>" << endl;
    cin >> jumlahBeli;
    inputKodeBarang(jumlahBeli);
    judul();
    cetakTransaksi();
    author();
    return 0;
}
INFO