Jumat, 17 Desember 2010

Spiral Number

Spiral number adalah angka-ngka yang disusun membentuk spiral berbentuk bujur sangkar dan berurutan. Dibawah ini merupakan code spiral number pada java yang saya batasi panjang sisi bujursangkarnya dimulai dari 2 sampai dengan 10 dan urutan anggkanya dimulai dari sudut kiri bawah. Semoga bermanfaat..


import javax.swing.JOptionPane;

/**
 *
 */
public class bilangan_spiral {
 public static void main(String[] args) {
     do{
    try {
            String dimensiString = JOptionPane.showInputDialog(null, "masukan dimensi spiral", "MASUKAN INPUT",
                    JOptionPane.QUESTION_MESSAGE);
     int sisi = Integer.parseInt(dimensiString);
            if (sisi >= 0) {
                int index[][] = new int[sisi][sisi];
                if (sisi > 2 && sisi < 11) {

    int bujur_sangkar = (int) Math.ceil((sisi) / 2.0);

    int j;
    int banyak_dimensi = sisi;
    int angka_awal = 1;

    for (int i = 0; i < bujur_sangkar;i++) {
      // bawah
      for (j = 0; j < banyak_dimensi; j++) {
        index [i+j]  [sisi - 1 - i] = angka_awal++;
      }

      // kanan
      for (j = 1; j<banyak_dimensi; j++) {
        index [sisi-1-i][sisi-i-1-j] = angka_awal++;
      }

      // atas
      for (j = 1; j<banyak_dimensi; j++) {
        index [sisi-1-i-j][i] = angka_awal++;
      }

      // kiri
      for (j = banyak_dimensi - 1; j > 1; j--) {
        index [i][sisi-i-j] = angka_awal++;
      }

      banyak_dimensi -= 2;
    }
     
    for (int looping1 = 0; looping1 < sisi; looping1++) {
                        for (int looping2 = 0; looping2 < sisi; looping2++) {
                            if (index[looping2][looping1] < sisi) {
                                System.out.print(" " + index[looping2][looping1] + " ");
                            } else {
                                System.out.print(index[looping2][looping1] + " ");
                            }
                        }
                        System.out.println("");
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "input tidak sesuai batasan \n"
                            + "batasan input adalah integer 3 sampai 10", "ERROR", JOptionPane.WARNING_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null, "ERROR \n" + " \n" + "DIMENSI SPIRAL HARUS POSITIF INTEGER \n"
                        + " \n" + "DARI 3 SAMPAI 10" + " \n", "ERROR", JOptionPane.ERROR_MESSAGE);
            }
        } catch (NumberFormatException exp) {
            JOptionPane.showMessageDialog(null, "ERROR \n" + " \n" + "DIMENSI SPIRAL HARUS POSITIF INTEGER \n"
                    + " \n" + "DARI 3 SAMPAI 10" + " \n", "ERROR", JOptionPane.ERROR_MESSAGE);
        }
     }
while(JOptionPane.showConfirmDialog(null,"INGIN MENGULANG??","OPTION",JOptionPane.ERROR_MESSAGE)==JOptionPane.YES_NO_OPTION);
}
}

Tidak ada komentar:

Posting Komentar