Tampilkan postingan dengan label Algoritma. Tampilkan semua postingan
Tampilkan postingan dengan label Algoritma. Tampilkan semua postingan
Selamat Sore agan2 :D  Kali ini ane mau posting program java lagi. Program ini namanya Magic square. Udah tau Apa itu Magic Square??? Kalo belum tau ane jelasin. Magic Square adalah sebuah game Matematika yang berbentuk matriks.  Disini kita harus mengisi matriks - matriks tersebut dengan angka agar  apabila dijumlahkan, hasil nya sama. baik horizontal, ataupun vertical. Berikut ilustrasinya



Kita akan membuat program dengan java agar mengisi kotak - kotak tersebut secara otomatis.
Program ini menggunakan Array 2D.


package magicsquare;
import java.util.Scanner;
/**
 *
 * @author wiratmoko11
 */
public class MagicSquare {
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        System.out.print("Masukkan panjang dan lebar : ");
        int n = input.nextInt();
        if(n % 2 == 0){
            System.out.println("harus ganjil !!!");
            System.exit(0);
        }
        int square[][] = new int[n+2][n+2];
        int i = 1, j = (n / 2) + 1 ;
        for (int m = 1; m <= Math.pow(n, 2); m++) {
            square[i][j] = m;
            if(i - 1 < 1){
                i = n;
            }else{
                i = i - 1;
            }
            if(j + 1 > n){
                j = 1;
            }else{
                j = j + 1;
            }
            if(square[i][j] != 0){
               i = i + 1;
               j = j - 1;
               if(i > n){
                   i = 1;
               }
               if(j < 1){
                   j = n;
               }
               i++;
            }           
        }
        for (int k = 1; k <= n; k++) {
            for (int l = 1; l <= n; l++) {
                System.out.print("" + square[k][l] + "\t");
            }
            System.out.println("");
        }
    }
}

Gambaran programnya adalah sebagai berikut
Nah mudahkan :D, oke sekian saja, semoga bermanfaat.
Tapi ingat, program tersebut hanya bisa untuk matriks ganjil.
Malam semuanya, malam minggu gini sebenernya enak keluar sama pacar, tapi berhubung saya lagi males keluar jomblo :D, jadi lebih baik update blog dulu aja  lah, karena update status  di facebook sudah biasa. :D

Oke malam ini saya mau membagikan sebuah program Java tentang konversi bilangan ke dalam kata yang merupakan tugas project saya semester 1 ini .
contoh :
1156785 =  satu juta seratus lima puluh enam ribu tujuh ratus delapan puluh lima
1010101010 = satu milyar sepuluh juta seratus satu ribu sepuluh 

Program ini menggunakan inputan dalam bentuk String, dan maksimal sepanjang 15 digit, atau ratusan Trillliun. berikut adalah kode nya :


/*
 * progam ini digunakan untuk mengkonversi bilangan ke dalam bentuk kalimat,
 * dengan panjang maksimal 15 digit.
 * 
 * Penjelasan Program :
 * awal nya kita inputkan bilangannya
 * Contoh : 1996
 * 
 * maka di Array 
 * indeks |3| |2| |1| |0|
 *         1   9   9   6
 * jadi indeks nya dibalik.
 * 
 * kalo tidak di balik,
 * indeks |0| |1| |2| |3|
 *         1   9   9   6
 * letak indeks akan selalu berubah bergantung pada jumlah data.
 * Tapi jika dibalik maka letak ratusan, ribuan, puluhan, jutaan akan tetap.
 * contoh letak ribuan akan tetap di indeks 5 - 3, tidak akan berubah walau jumlah data nya berubah
 */
package pembilang;
import java.util.Scanner;

/**
 *
 * @author moko
 */
public class Pembilang {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);//inisialisasi variabel input sebagai Scanner
        String bilangan = input.nextLine(); //inputan untuk bilangan
        String nol = "0";//
        if(bilangan.length() % 3 == 1){//jika panjang bilangan di mod 3 = 1
            bilangan = nol.concat(nol).concat(bilangan); //bilangan = 0 + 0 + bilangan
        }else if(bilangan.length() % 3 == 2){//jika panjang bilangan di mod 3 = 2 
            bilangan = nol.concat(bilangan);//bilangan = 0 + bilangan
        }
        int panjangbil = bilangan.length();//panjangbil = panjang bilangan
        String angka[] = new String[panjangbil];//inisialisasi array angka dalam bentuk string
        int n = 0;//inisialiasasi n, n digunakan untuk membantu dalam membalik isi array
        
        
        for (int i = panjangbil-1; i >=0 ; i--) {//untuk memasukkan setiap karakter ke dalam string angka, dengan membalik urutan angka
            angka[i] = bilangan.substring(n, n+1);
            n++;
        }
        //menampilkan isi array
        for (int i = panjangbil - 1; i >=0; i--) {//untuk mencocokkan angka yang di Array            
            switch (angka[i]) {
                case "1"://jika angka indeks i sama dengan 1
                    if(i == 1 || i == 4 || i == 7 || i == 10 || i == 13){//untuk mengecek apakah angka belas an
                        if(!(angka[i-1].equals("1") || angka[i-1].equals("0"))){//mengecek apakah bukan 10 atau 11
                            System.out.print("");
                        }else if(angka[i-1].equals("1")){//jika angka index ke i - 1 sama dengan 1, berati 11
                            System.out.print("sebelas ");
                        }else if(angka[i-1].equals("0")){//jika angka index ke i - 1 sama dengan 0, berarti 10
                             System.out.print("sepuluh ");
                        }
                    }else if(i == 2 ||(i == 3 && (angka[4].equals("0") && angka[5].equals("0") && !angka[4].equals("1"))) || i == 5 || i == 8 || i == 11 || i == 14){//untuk mengecek apakah i dalam posisi ratusan dan seribu
                        System.out.print("se");
                    }else if(i == 0 || i == 3 || i == 6 || i == 9 || i == 12){//untuk mengecek nilai i di posisi satuan
                        if(!angka[i+1] .equals("1")){//apakah di depan nilai i bukan 1
                            System.out.print("satu ");
                        } 
                    }
                    break;
                case "2"://jika angka indeks i sama dengan 2
                    System.out.print("dua ");
                    break;
                case "3"://jika angka indeks i sama dengan 3
                    System.out.print("tiga ");
                    break;
                case "4"://jika angka indeks i sama dengan 4
                    System.out.print("empat ");
                    break;
                case "5"://jika angka indeks i sama dengan 5
                    System.out.print("lima ");
                    break;
                case "6"://jika angka indeks i sama dengan 6
                    System.out.print("enam ");
                    break;
                case "7"://jika angka indeks i sama dengan 7
                    System.out.print("tujuh ");
                    break;
                case "8"://jika angka indeks i sama dengan 8
                    System.out.print("delapan ");
                    break;
                case "9"://jika angka indeks i sama dengan 9
                    System.out.print("sembilan ");
                    break;
            }
            if((i == 14 || i == 11|| i == 8 || i == 5 || i == 2) && !angka[i].equals("0")){//untuk mengecek nilai ratusan dan angka nya tidak b0leh 0
                System.out.print("ratus ");  
            }else if((i==13 || i==10 || i==7 || i == 4 || i == 1) && (!angka[i].equals("0") && !angka[i].equals("1")) ){//untuk mengecek nilai puluhan dan membedakan antara 10 dan belasan.
                System.out.print("puluh ");
            }else if(i==0 || i == 3 || i == 6 || i== 9 || i == 12){//untuk mengecek nilai belasan
                if((!angka[i].equals("1") && !angka[i].equals("0")) && (angka[i+1].equals("1"))){//apabila bukan 10 atau 11
                    System.out.print("belas ");
                }
            }
            if(i == 12){//untuk mengecek nilai trilliun
                System.out.print("trilliun ");
            }else if(i == 9 && !(angka[9].equals("0") && angka[10].equals("0") && angka[11].equals("0"))){//untuk mengecek nilai milyar dan digit milyar apakah 000, jika 000 maka milyar tidak dibaca
                System.out.print("miliiar ");
            }else if(i == 6 && !(angka[6].equals("0") && angka[7].equals("0") && angka[8].equals("0"))){//untuk mengecek nilai juta dan digit juta apakah 000, jika 000 maka juta tidak dibaca
                System.out.print("juta ");
            }else if(i == 3 && !(angka[3].equals("0") && angka[4].equals("0") && angka[5].equals("0"))){//untuk mengecek nilai ribu dan digit ribu apakah 000, jika 000 maka ribu tidak dibaca
                System.out.print("ribu ");
            }
        }
    }
}

itu tadi adalah program yang saya buat menggunakan java.
Semoga Bermanfaat :)


Setelah kemarin sudah memposting Program Konversi Desimal ke Biner, sekarang program Biner ke Desimal menggunakan Java.


package tugasalpro1;
import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author moko
 */
public class binertodesimal {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //inisialisai
        int biner, i = 0, cek = 0;
        long nilai = 0;
        
        biner = input.nextInt();
        
        
        //mencari 2 pangkat n
        do{
            if(biner - (i * Math.pow(10, i)) >= 0){
           
            cek = cek+1;
        }
            i++;
            
        }while(i <= biner);

        
        
        for (int j = cek; j >= 0; j--) {
            // n = biner - 10 pangkat j
            int n = (int) (biner - Math.pow(10,j));
            // k = 10 pangkat j
            int k = (int) Math.pow(10, j);
           
            
            if(n >= 0){
                
            nilai = (int) (nilai + Math.pow(2, j));
            biner = biner - k;
            }
            
        }
        System.out.println(nilai);
    }
    
}


Ini adalah program sederhana yaitu konversi biner ke desimal tanpa menggunakan Array menggunakan bahasa pemrograman Java.


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tugasalpro1;

import java.util.Scanner;

/**
 *
 * @author moko
 */

/**
 * program konverter bilangan desimal ke biner
 * dengan cara, pertama kita input kan angka desimal
 * lalu kita cari 2 pangkat n terdekat
 * contoh seperti 17, maka 2 pangkat n terdekat ialah 16 atau 2 pangkat 4
 * setelah itu 17 tadi dikurangkan 16
 * jika masih lebih besar 0, maka tulis 1
 * jika kurang dari 0, ditulis 0
 */
public class DestoBiner {
    public static void main(String[] args) {       
        Scanner input = new Scanner(System.in);
        //inisialiasi
        int angka, cek, k;
        
        //input angka
        System.out.print("input kan nilai desimal : ");
        angka = input.nextInt();
        
        //inisialisasi
        int i=0;
        
        k = angka;
        
       
        //mencari 2 pangkat n
        
     do{
           // k sama dengan k - (2 pangkat i)
           k = (int) (k - Math.pow(2, i));
           
           // i = i+1
           i++;
           
           // diulang selama i <= k          
       }while (i <= k);
     
     //jika k lebih keci 0, maka i = i -1
     if(k < 0){
         i = i -1;
     }
        //i sudah didapat
        
       //i dimasukkan di variabel cek
        cek = i;
        
        System.out.print("bilangan biner dari "+angka+" adalah = ");
        // untuk variabel j = cek, looping selama j lebih besar 0, j = j - 1
        for (int j = cek; j >=0; j--) {
            //jika angka - 2 pangkat j > = 0
            if(angka - Math.pow(2, j) >=0){
                //cetak 1
                System.out.print("1");
                //angka = angka - 2 pangkat j
                angka = (int) (angka - Math.pow(2, j));
            }else{
                //cetak 0
                System.out.print("0");
                
            }
        }
        System.out.println("");
    }
}