Jumat, 31 Agustus 2012

Kalkulator Sederhana (Soal Bonus^^)

Input
Operand1 operator1 operand2 operator2 … ….operandN  operatorN
Output
Hasil operasi

Contoh :
5 + 3 – 2 + 2

Output
8







Soal Bonus

Penilaian (Poin 110)
1.     Penamaan variable ,operator, komentar untuk penjelasan program. ( Poin 10)
2.     Program dibuat lebih dari satu file class dan satu method (satu method harus berjenis fungsi – memiliki nilai kembalian) ( Poin 25)
3.     Penggunaan Class Library untuk Input dari Keyboard( Poin 30)
4.     Pengunaan Struktur Kontrol  (Conditional dan Looping). ( Poin 20)
5.     Program sesuai dengan Algortima yang diberikan ( Poin 25)

1.   Class “thrbonus.java”
package THR_Bonus;

import java.util.Scanner;
/**
 *
 * @author Rizky
 */
public class thrbonus {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);//membuat objek scanner dengan nama objek read
       
        System.out.println("Masukan 3 bilangan dan 2 operator (Gunakan spasi untuk pemisah bilangan dana operator):");
        double bilangan1 = read.nextDouble();
        String operator1 = read.next();
        double bilangan2 = read.nextDouble();
        String operator2 = read.next();
        double bilangan3 = read.nextDouble();
        /*deklasrasi variabel bilangan1,bilangan2,bilangan3, operator1 dan
         * operator2. Variabel bilangan1 dan bilanan2 bertipe data double agar
         * apabila ada hasil koma akan muncul hasilnya. operator aritmatika
         */
        
        boolean test = testTingkat(operator1,operator2); //instansiasi fungsi
       
        //deklarasi variabel hitungAwal dan hitungAkhir
        double hitungAwal = 0;
        double hitungAkhir = 0;
       
        // setara 2 * 3 + 5
        // tidak setara 2 + 5 * 3
        if(test){
            hitungAwal = hitung(new double[] {bilangan1,bilangan2}, operator1);
            hitungAkhir = hitung(new double[] {hitungAwal, bilangan3}, operator2);
            //pemanggilan proses hitung apabila setara/true
        }else{
        hitungAwal = hitung(new double []{bilangan2,bilangan3}, operator2);
        hitungAkhir = hitung(new double [] {bilangan1, hitungAwal}, operator1);
        //pemanggilan proses hitung apabila tidak setara/false
        }
        System.out.println(hitungAkhir); //mencetak hasil akhir yang ada di dalam variabel hitungAkhir
    }
   
    //proses penghitungan
    private static double hitung(double[] bil, String op) {
        double result = 0;//deklarasi variabel result
        if (op.equals("+")) {
            result = bil[0] + bil[1];//penyeleksian untuk operator +
        } else if (op.equals("-")) {
            result = bil[0] - bil[1];//penyeleksian untuk operator -
        } else if (op.equals("*")) {
            result = bil[0] * bil[1];//penyeleksian untuk operator *
        } else if (op.equals("/")) {
            result = bil[0] / bil[1];//penyeleksian untuk operator /
        }
        return result;//menggembalikan  nilai variabel result
    }

    // false tidak setingkat
    // true setingkat
    // menyusun tingkatkan operator
    private static boolean testTingkat(String op1, String op2){
        boolean expression = false;
        /*deklarasi variabel expression, untuk menandakan apakah operator1 lebih tinggi tingkatannya daripada operator2 atau sebaliknya
         * operator * dan operator / tingkatannya lebih tinggi daripada
         * operator + dan operator -
         * operator * dan operator / = setara
         * operator + dan operator - = setara
         * apabila operator 1 dan operator 2 sama maka setara
         */
        if(op1.equals("+") && op2.equals("*")){
            expression = false;// + lebih rendah dari *
        }else if(op1.equals("+") && op2.equals("/")){
            expression = false;// + lebih rendah dari /
        }else if(op1.equals("+") && op2.equals("+")){
            expression = true;// setara
        }else if (op1.equals("+") && op2.equals("-")) {
            expression = true;// setara
        }else if(op1.equals("-") && op2.equals("*")){
            expression = false;// - lebih rendah dari *
        }else if(op1.equals("-") && op2.equals("/")){
            expression = false;// - lebih rendah dari /
        }else if(op1.equals("-") && op2.equals("+")){
            expression = true;// setara
        }else if(op1.equals("-") && op2.equals("-")){
            expression = true;// setara
        }else if(op1.equals("*") && op2.equals("*")){
            expression = true;// setara
        }else if(op1.equals("*") && op2.equals("/")){
            expression = true;// setara
        }else if(op1.equals("*") && op2.equals("+")){
            expression = true;// * lebih tinggi dari +
        }else if(op1.equals("*") && op2.equals("-")){
            expression = true;// * lebih tinggi dari -
        }else if(op1.equals("/") && op2.equals("*")){
            expression = true;// setara
        }else if(op1.equals("/") && op2.equals("/")){
            expression = true;// setara
        }else if (op1.equals("/") && op2.equals("+")) {
            expression = true;// / lebih tinggi dari +
        }else if(op1.equals("/") && op2.equals("-")){
            expression = true;// / lebih rendah dari -
        }else{
            System.out.println("Error!");
        }
        return expression;//meminta nilai kembalian variabel expression
    }
}

Ini Print Screen hasil ouput’nya^^v




Ini link buat download :)









Tidak ada komentar:

Posting Komentar