Enkripsi Karakter - Soal Lomba Pemrograman Oleh: Yudi Setiawan
Pada tutorial ini, saya akan mencoba membahas salah satu soal pemrograman yang saya dapatkan ketika saya masih semester 3 dulu. Menurut saya soalnya cukup lumayan sulit jadi, bagi Anda yang belum paham benar tentang ilmu dasar pemrograman saran saya belajar dulu. Berikut ialah soalnya. Buat program yang...
Pada tutorial ini, saya akan mencoba membahas salah satu soal pemrograman yang saya dapatkan ketika saya masih semester 3 dulu. Menurut saya soalnya cukup lumayan sulit jadi, bagi Anda yang belum paham benar tentang ilmu dasar pemrograman saran saya belajar dulu. Berikut ialah soalnya. Buat program yang mengenkrip karakter berdasarkan tabel di bawah ini:
Dengan pengecualian substring yang diapit tanda (‘...’) tidak akan di enkrip. Input baris pertama berupa jumlah test case N, N baris berikutnya berupa sebaris string lower case. Output string hasil enkrip 1 baris tiap input. Dimana 1 < N < 100.
Okay, gimana sudah baca soalnya kan? Kira – kira Anda sudah bisa membayangkan bagaimana teknik untuk menyelesaikan soal di atas. Berikut ialah sampel input dan sampel outputnya. Sampel Input: 1 this is (‘cool’) Sampel output: gsrh rh (‘cool’) Diatas adalah sampel inputnya, dimana pada baris pertama ialah jumlah case / jumlah kasus yang ada dan di baris berikutnya ialah teks yang akan di enkrip.
Pembahasan ● ●
●
Pertama, Anda bisa membuat sebuah 2 buah array yang berisi huruf alphabet dari a..z dan z..a Kedua, buatlah sebuah inputan menggunakan pustaka Scanner (Di sarankan menggunakan Scanner karena, lebih mudah dalam proses pembacaannya jika inputan tidak mengandung case string). Ketiga, lakukan perulangan sebanyak jumlah case yang ada untuk melakukan inputan teks yang
●
●
akan di enkrip. Keempat, buatlah sebuah perulangan dimana, perulangan ini akan membaca setiap karakter yang ada pada teks dan kemudian akan mengenkripnya yang akan di simpan di variabel baru(Buat variabel baru sebagai tempat menyimpan hasil enkrip). Kelima, dalam proses pembacaan karakter tadi(langkah sebelumnya) buat sebuah pengkondisian jika karakter itu mengandung “ ( “ dan “ ‘ “ maka, karakter yang didalamnya akan di loss kan atau dilewatkan begitu saja karena tidak akan di enkrip.
Sebelum Anda mengerjakan soal diatas, mari kita coba buat program sederhananya saja terlebih dahulu. Dimana, program ini akan menampilkan huruf alphabet dari a sampai z dan z sampai a. Berikut source codenya. import java.util.Arrays; /** * * @author Yudi Setiawan * * Alphabet * */ public class Alphabet { public static void main(String[] args) { String[] az = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; String[] za = new String[az.length]; // Mengisi nilai za int index = az.length-1; for(int i = 0; i < za.length; i++) { za[index] = az[i]; index--; } // Menampilkan nilai az dan za System.out.println("A sampai Z : "+Arrays.toString(az)); System.out.println("Z sampai A : "+Arrays.toString(za)); } }
Dan berikut ialah program percobaan sederhana untuk enkripsi karakter yang di inputkan oleh user.
import java.util.Scanner; /** * * @author Yudi Setiawan * * Percobaan Enkripsi * */ public class PercobaanEnkripsi { public static void main(String[] args) { // Objek Scanner; Scanner scan = new Scanner(System.in); // Arrays String[] az = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; String[] za = new String[az.length]; // Mengisi nilai dari z..a int index = za.length-1; for(int i = 0; i < za.length; i++) { za[i] = az[index]; index--; } //
Input sebuah kata atau kalimat dan tekan ENTER
untuk mengakhiri System.out.println("Masukkan sebuah Kata atau Kalimat:"); String input = scan.nextLine(); // Proses Enkripsi String enkrip = ""; for(int a = 0; a < input.length(); a++) { String baca = String.valueOf(input.charAt(a)); if(baca.equals(" ")) { enkrip += " "; continue; } for(int b = 0; b < za.length; b++) {
if(baca.equals(az[b])) enkrip += za[b]; } } // Menampilkan hasil Enkripsi System.out.println("Hasil Enkrip : "+enkrip); } }
Dan berikut ialah source code program Enkrip untuk soal diatas. import java.util.Scanner; /** * * @author Yudi Setiawan * * Enkrip * */ public class Enkrip { public static void main(String[] arguments) { // Objek Scanner Scanner scan = new Scanner(System.in); // Array String[] az = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; String[] za = new String[az.length]; // Mengisi nilai za int index = az.length-1; for(int i = 0; i < za.length; i++) { za[i] = az[index]; index--; } //
Input jumlah case
int jlh_case = scan.nextInt(); // Input kata atau kalimat sesuai dengan jumlah case yang di inputkan String[] input = new String[jlh_case]; for(int a = 0; a < jlh_case; a++) { input[a] = scan.nextLine(); // Untuk menghindari Null Pointer Exception if(input[a].isEmpty()) input[a] = scan.nextLine(); } // Proses Enkripsi String[] output = new String[jlh_case]; for(int a = 0; a < jlh_case; a++) { // Deklarasi awal output output[a] = ""; //
Proses pembacaan tiap karakter pada kata
atau kalimat for(int b = 0; b < input[a].length(); b++) { String baca = String.valueOf(input[a].charAt(b)); if(baca.equals(" ")) output[a] += " "; else if(baca.equals("(")) { for(int c = b; c < input[a].length(); c++) { String baca2 = String.valueOf(input[a].charAt(c)); if(baca2.equals(")")) { output[a] += ")"; b = input[a].indexOf(")"); break; } output[a] += baca2; } } else { for(int c = 0; c < az.length; c++)
{ if(baca.equalsIgnoreCase(az[c])) { output[a] += za[c]; break; } } } } } // Tampilkan Output for(int a = 0; a < jlh_case; a++) System.out.println(output[a]);
} }
Tentang Penulis Yudi Setiawan Saat ini aktif sebagai Mahasiswa di salah satu Universitas di kota Medan dengan mengambil bidang Fakultas Teknik dan Ilmu Komputer. Sangat senang dengan bahasa pemrograman Java dan Android.