Jumat, 23 November 2012

Jawaban Strukdat Latihan3

Well, hari ini aku sangat bersyukur kepada Papa Jesus ^_^
Atas kasih dan pertolongan-Nya, akhirnya aku berhasil mengerjakan latihan soal yang diberikan dosen kami kepada kami... Karena itu, sekarang aku mau mempersembahkan ini untuk kemuliaan-Nya dengan menolong siapa saja yang membutuhkan jawaban latihan itu...
Ini selesai sama sekali bukan hasil kepintaranku, tapi karena pertolongan TUHAN sajalah aku bisa menyelesaikannya... jadi, pujilah nama-Nya yang kudus! :)

well, ini dia soal latihannya :




Sebuah toko campuran menjual mie instant.
Untuk
persediaan, toko tersebut dilengkapi oleh gudang untuk menyimpan barang yang baru tiba dari produsen dalam bentuk kardus dan kemudian dipajang pada toko yang muatan rak pajangannya terbatas.Untuk menghindari adanya barang yang kadaluarsa karena tersimpan di gudang, maka barang yang lebih dulu datang harus dipajang segera apabila tempat pada rak telah tersedia.Dengan demikian, untuk mengefisienkan proses pengambilan, tumpukan barang yang ada di gudang harus dibuat sedemikian rupa sehingga barang yang lama berada pada tumpukan paling atas.Gudang dapat menampung 8 tumpukan kardus dan dilengkapi dengan sebuah tumpukan khusus yang sengaja dibuat kosong untuk keperluan penyimpanan barang sementara pada saat pengaturan tumpukan ketika ada barang baru yang tiba.
Buatlah program entri dengan format input dan output sebagai berikut:
S
Simpan kardus no. 1 ke tumpukan 1
S
Simpan kardus no. 2 ke tumpukan 2
(misalnya semua tumpukan (8 tumpukan) sudah terisi masing-masing 1 kardus)
S
Pindahkan kardus no. 1 ke tumpukan khusus
Simpan kardus no. 8 ke tumpukan 1
Pindahkan kardus no. 1 ke tumpukan 1 dari tumpukan khusus
A
Ambil kardus no. 1 dari tumpukan 1
A
Ambil kardus no. 2 dari tumpukan 2

Dan ini dia jawaban yang kutemukan...

import java.util.Arrays;
import java.util.Scanner;

/**
 *
 * @author 11.6725
 */
public class Excercise3 {

    static int[][] ruang = new int[8][20];
    static int[] khusus = new int[20];
    static int idx = 0, kardus = 0;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String A;
        do {
            A = input.next();
            if ("?".equals(A)) {
                continue;
            } else if ("S".equals(A)) {
                Tambah();
            } else if ("A".equals(A)) {
                Ambil();
            }
        } while (!"?".equals(A));
    }

    static void Tambah() {
        kardus++;
        for (int x = ruang[idx][0]; x != 0;) {
            Pushk(Popr(idx));
            System.out.println("Pindahkan kardus " + x +" ke tumpukan khusus");
            x = ruang[idx][0];
        }
        Pushr(kardus);
        System.out.println("Simpan kardus no. " + kardus + " ke tumpukan " + (idx + 1));
        for (int x = khusus[0]; x != 0;) {
            Pushr(Popk());
            System.out.println("Pindahkan kardus " + x + " ke tumpukan " + (idx + 1)+" dari tumpukan khusus ");
            x = khusus[0];
        }
        if (idx == ruang.length-1) {
            idx = 0;
        } else {
            idx++;
        }
    }

    static void Ambil() {
       
        int temp=kardus, j=-1;
        for (int i = 0; i < ruang.length; i++) {
            if(ruang[i][0]==0) continue;
            if (ruang[i][0] <= temp && ruang[i][0]!=0) {
                temp = ruang[i][0];
                j=i;
            }
        }
        if(j<0){
            System.out.println("Tidak Ada Kardus Dalam Gudang");
            return;
        }
        System.out.println("Ambil kardus no. " + Popr(j) + " dari tumpukan " + (j+1));
    }

    static void Pushr(int u) {
        System.arraycopy(ruang[idx], 0, ruang[idx], 1, ruang[idx].length - 1);
        ruang[idx][0] = u;
    }

    static void Pushk(int u) {
        System.arraycopy(khusus, 0, khusus, 1, khusus.length - 1);
        khusus[0] = u;
    }

    static int Popr(int a) {
        int temp = ruang[a][0];
        System.arraycopy(ruang[a], 1, ruang[a], 0, ruang[a].length - 1);
        return temp;
    }

    static int Popk() {
        int temp = khusus[0];
        System.arraycopy(khusus, 1, khusus, 0, khusus.length - 1);
        return temp;
    }
}





Finish... :)

Semoga bermanfaat yah...

Tidak ada komentar: