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:SSimpan kardus no. 1 ke tumpukan 1SSimpan kardus no. 2 ke tumpukan 2
(misalnya semua tumpukan (8 tumpukan) sudah terisi masing-masing 1 kardus)SPindahkan kardus no. 1 ke tumpukan khususSimpan kardus no. 8 ke tumpukan 1Pindahkan kardus no. 1 ke tumpukan 1 dari tumpukan khususAAmbil kardus no. 1 dari tumpukan 1AAmbil 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:
Posting Komentar