This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Jumat, 15 Desember 2023

control structure

source code

control structure



## Control Structure

Pada sesi ini anda diminta untuk menyelesaikan sebuah persoalan percabangan
sederhana, dan sebuah persoalan kombinasi antara percabangan dan perulangan.


### Task 01: Next Three Months (score: 40pts; file : t01_01.c)
Tuliskan sebuah program yang akan membaca sebuah masukan dari ```stdin```
berupa bilangan bulat ```x```| ```x = {1, 2, 3, ..., 12}```. ```x``` adalah
representasi dari bulan dalam satu tahun kalender. Nilai ```1```
merepresentasikan bulan ```January```, nilai ```2``` merepresentasikan
bulan ```February```, dst.

Berdasarkan nilai ```x``` tuliskan tiga nama bulan dimulai dari bulan
yang direpresentasikan oleh nilai masukan. Setiap nama bulan dituliskan
dalam satu baris
keluaran ke ```stdout```. Sebagai contoh, jika nilai masukan, ```x```,
adalah ```3``` maka program akan memberikan keluaran sebagai berikut.
```
March
April
May

```

Jika berdasarkan nilai masukan jumlah bulan dalam setahun kurang dari
tiga buah, maka diulang ke bulan awal. Harap diperhatikan, karena
terjadi perlintasan tahun maka di antara keluaran bulan terakhir
(```December```) dan bulan awal (```January```) diselipkan keluaran
```New year```. Sebagai contoh, jika masukan ```x``` adalah ```11```,
maka program akan memberikan keluaran sebagai berikut.
```
November
December
New year
January

```

### Task 02: Donat Emejing (score: 60pts; file : t01_02.c)
Ucok dan Butet adalah sahabat sahabat sejati, bak kepompong dan kupu-kupu.
Ucok dan Butet sama-sama pecinta donat, jajanan murah meriah yang cihuy
di lidah.

Sabtu lalu, sebuah toko spesialis menjual donat baru saja buka, "Donat Emejing".
Karena donat jualannya enak, toko tersebut selalu ramai dikunjungi pelanggan
terutama di sore hari. Karena penasaran dan tak ingin ketinggalan,
Ucok dan Butet kemudian mengunjungi toko donat tersebut di pagi hari untuk
menghindari "persaingan". Sesampainya di toko donat, Ucok dan Butet seolah
tak percaya dengan apa yang mereka lihat, hati mereka berbunga-bunga karena
melihat berbagai varian donat yang begitu rupa.

Dalam melayani pelanggan, "Donat Emejing" mewajibkan setiap pelanggan
untuk mengantre dengan rapi. Pelanggan dilayani satu per satu. Setiap pelanggan
hanya diizinkan melakukan satu transaksi dalam satu waktu. Setiap transaksi hanya
diperbolehkan paling banyak membeli tiga buah donat varian apapun. Pelanggan
dapat membeli kembali dengan mengulang antrean. Untuk melayani satu transaksi
pembelian diperlukan waktu tepat 3 menit. Ucok dan Butetpun mengantre.

Karena masih pagi, maka benar saja hanya Ucok dan Butet pelanggan toko.
Dalam antrean Ucok selalu mendahului Butet. Ucok ingin membeli 4 buah donat
sementara Butet ingin membeli 7 buah donat. Dengan menerapkan aturan toko maka
Ucok dan Butet tak cukup mengantre satu kali. Ucok harus mengantre 2 kali
sementara Butet harus 3 kali. Antrean Ucok (U) dan Butet (B) dapat diilustrasikan
sebagai berikut.
```
U-B-U-B-B
```

Jika dihitung waktu tunggu yang harus dilalui, maka waktu tunggu Ucok adalah 9 menit,
sementara Butet memerlukan 15 menit, dan total waktu tunggu mereka adalah 24 menit.

Tugas anda adalah mengembangkan sebuah program yang men-simulasi antrean di toko
donat tersebut sehingga dapat dihitung waktu tunggu yang diperlukan Ucok dan Butet.
Program akan membaca dua buah nilai numerik (```x1```, ```x2```) dari ```stdin```
yang masing-masing merepresentasikan jumlah donat yang ingin dibeli Ucok dan Butet.
Jika tidak membeli, maka tidak perlu mengantre. Program kemudian akan menampilkan
tiga baris keluaran ke ```stdout```, baris pertama adalah lama waktu tunggu Ucok,
baris kedua adalah lama waktu tunggu Butet, dan baris ketiga adalah kombinasi lama
waktu tunggu keduanya. Sebagai contoh, jika Ucok ingin membeli 4 buah
donat dan Butet ingin membeli 7 buah donat maka program akan menampilkan keluaran
sebagai berikut.
```
9
15
24

```


## Submission
1. t01_01.c
2. t01_02.c
3. changelog.txt

## How to submit?
Please see https://youtu.be/g0BQ195-aWo

test 1 : 

#include <stdio.h>

int main(int _argc, char **_argv) {
  int masuk;

    scanf("%d", &masuk);

    if (masuk == 1){
        printf ("January\nFebruary\nMarch\n");
    }
    else if (masuk == 2){
        printf ("February\nMarch\nApril\n");
    }
    else if (masuk == 3){
        printf ("March\nApril\nMay\n");
    }
    else if (masuk == 4){
        printf ("April\nMay\nJune\n");
    }
    else if (masuk == 5){
      printf ("May\nJune\nJuly\n");
    }
    else if (masuk == 6){
      printf ("June\nJuly\nAugust\n");
    }
    else if (masuk == 7){
    printf ("July\nAugust\nSeptember\n");
    }
    else if (masuk == 8){
    printf ("August\nSeptember\nOctober\n");
    }
    else if (masuk == 9){
    printf ("September\nOctober\nNovember\n");
    }
    else if (masuk == 10){
    printf ("Oktober\nNovember\nDecember\n");
    }
    else if (masuk == 11){
    printf ("November\nDecember\nNew year\nJanuary\n");
    }
    else if (masuk == 12){
    printf ("December\nNew year\nJanuary\nFebruary\n");
    }
 
    return 0;
}

compile :






test 2 :

#include <stdio.h>
#include <math.h>

int main() {
    int x1, antrianA = 0, waktuAntrianA = 0;
    int x2, antrianB = 0, waktuAntrianB = 0;
    int totalAntrian = 0, totalWaktuAntrian = 0;

    scanf("%d", &x1);
    scanf("%d", &x2);

    if (x1 == 0 && x2 == 0) {
        // kasus khusus x1=x2=0
        printf("0\n0\n0\n");
    } else if (x1 == 0) {
        // kasus khusus x1=0 dan x2>0
        antrianB = ceil((double) x2 / 3); // membulatkan ke atas hasil pembagian x2 dengan 3
        waktuAntrianB = antrianB * 3; // waktu antrian B
        printf("0\n%d\n%d\n", waktuAntrianB, waktuAntrianB);
    } else if (x2 == 0) {
        // kasus khusus x1>0 dan x2=0
        antrianA = ceil((double) x1 / 3); // membulatkan ke atas hasil pembagian x1 dengan 3
        waktuAntrianA = antrianA * 3; // waktu antrian A
        printf("%d\n0\n%d\n", waktuAntrianA, waktuAntrianA);
    } else {
        // kasus umum x1>0 dan x2>0
        if (x1 % 3 == 0) {
            antrianA = x1 / 3;
        } else {
            antrianA = x1 / 3 + 1;
        }

        if (x2 % 3 == 0) {
            antrianB = x2 / 3;
        } else {
            antrianB = x2 / 3 + 1;
        }

        totalAntrian = antrianA + antrianB;

        if (antrianA > antrianB) {
            waktuAntrianA = totalAntrian * 3;
            waktuAntrianB = (antrianB * 2) * 3;
        } else if (antrianA == antrianB) {
            waktuAntrianA = (totalAntrian - 1) * 3;
            waktuAntrianB = totalAntrian * 3;
        } else {
            waktuAntrianA = ((antrianA * 2) - 1) * 3;
            waktuAntrianB = totalAntrian * 3;
        }

        totalWaktuAntrian = waktuAntrianA + waktuAntrianB;
        printf("%d\n%d\n%d\n", waktuAntrianA,waktuAntrianB,totalWaktuAntrian);
    }

    return 0;
}

compile :