Pembahasan Soal UAS Dasar Pemrograman (2)


Hari sabtu lalu baru sempat membahas 1 soal UAS, yang juga saya posting di sini. Kali ini saya akan membahas 1 soal lagi. Berikut soal yang dimaksud :

Soal

Buatlah sebuah program yang mampu menampilkan pola seperti contoh di bawah. Program menerima masukan sebuah bilangan integer positif 1 < N < 2^32 dan menghasilkan pola tersebut.

Contoh:

Jika N = 5, maka pola yang ditampilkan :

1

3 2

5 4 1

7 6 3 2

9 8 5 4 1

Jika N = 10, maka pola yang ditampilkan :

1

3 2

5 4 1

7 6 3 2

9 8 5 4 1

11 10 7 6 3 2

13 12 9 8 5 4 1

15 14 11 10 7 6 3 2

17 16 13 12 9 8 5 4 1

Petunjuk :

– Tidak perlu dibuat tester, cukup solvernya saja

– Di dalam solver terdapat method yang menerima masukan N dan mengembalikan sebuah string

berisi pola

Jawaban

Kode solusi akan direpresentasikan dengan suatu kelas bernama Pola yang akan dibuat dalam bahasa Java. Pembentukan pola yang dimaksud dikerjakan oleh method buatPola(). Berikut implementasi dari kelas Pola.


public class Pola
{
//constructor
public Pola(){
}
//method utama untuk membentuk pola
public String buatPola(int n){
String pola = "";
int delta = 0;
int temp = 0;
int limit = n;
if(n >=1 && n<= Math.pow(2,32))
{
if(limit % 2 == 0) limit--; //jika n atau limit genap

for(int i=1; i<=limit; i++){
for(int j=1; j<=limit; j++){
if(j <= i){
if(i == j){
if((i % 2)!=0) pola += "1\t"; //jika i ganjil
elseĀ  pola += "2 "; //jika i genap
}
else{// j < i
delta = i-j;

if(j % 2 != 0) temp = delta * 2 + 1; //jika j ganjil
else temp = delta * 2 + 2; //jika j genap

pola += temp + "\t";
}
}
}
pola += "\n";
}
}
else{
pola = "n tidak terdefinisi";
}
return pola;
}
}

Untuk mengetes hasil keluaran dari method tersebut, tinggal ketikan kode di bawah ini di kelas main :


Pola p = new Pola();

System.out.println(p.buatPola(5));

— Sekian —

2 thoughts on “Pembahasan Soal UAS Dasar Pemrograman (2)

  1. setelah diliat-liat lagi solusi di atas harusnya bisa dikodekan lebih ringkas. percabangan if(i==j) tampaknya ga perlu. jadi seperti ini :

    public class Pola
    {
    //constructor
    public Pola(){
    }
    //method utama untuk membentuk pola
    public String buatPola(int n){
    String pola = “”;
    int delta = 0;
    int temp = 0;
    int limit = n;
    if(n >=1 && n<= Math.pow(2,32))
    {
    if(limit % 2 == 0) limit–; //jika n atau limit genap
    for(int i=1; i<=limit; i++){
    for(int j=1; j<=limit; j++){
    if(j <= i){
    delta = i-j;
    if(j % 2 != 0) temp = delta * 2 + 1; //jika j ganjil
    else temp = delta * 2 + 2; //jika j genap
    pola += temp + "\t";
    }
    }
    pola += "\n";
    }
    }
    else{
    pola = "n tidak terdefinisi";
    }
    return pola;
    }
    }

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s