Kali ini kita akan membuat sebuah program enkprisi sederhana dengan menggunakan bahasa pemrograman C. Kira-kira seperti ini brief yang diberikan untuk program kita:
Anda diminta untuk membuat program yang dapat meng-enkrip string menggunakan fungsi pergeseran (translasi) karakter dalam urutan abjad secara siklus. Bila karakter ditulis dengan huruf besar maka ubah karakter tersebut menjadi dalam huruf kecil terlebih dahulu sebelum digeser. Besar pergeseran ditentukan dan selalu lebih besar dari pada 0. Selain besar pergeseran, arah pergeseran, kiri atau kanan, juga harus ditentukan. String yang akan dienkrip disimpan dalam array dan gunakan pointer untuk memanipulasi data string dalam array tersebut. Contoh pergeseran karakter dalam urutan abjad:
Pergesesan sebesar 3:
Arah pergeseran: kanan
a → d
b → e
c → f
:
:
z → c
Pergesesan sebesar 2:
Arah pergeseran: kiri
a → y
b → z
c → a
:
:
z → x
Gunakan urutan abjad dalam daftar ASCII untuk mengatur pergeseran.
Contoh Input:
Masukkan sebuah string : informatikA
Besar pergeseran karakter : 2
Arah pergeseran : kanan
Contoh output:
Hasil enkripsi: kphqtocvkmc
Contoh Input:
Masukkan sebuah string : zOo
Besar pergeseran karakter : 4
Arah pergeseran : kiri
Contoh output:
Hasil enkripsi: vkk
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
//prototipe fungsi
void enkripsi(char * data, char * arah, int pergeseran);
int main(void) {
char *p, str[255];
int i;
char pergeseran[6];
char *ppergeseran = pergeseran;
printf("\nMasukkan sebuah String :\n");
scanf(" %[^\n]", str);
do {
printf("\nBesar pergeseran Karakter : ");
scanf(" %d", &i);
} while(i<0);
do {
printf("\n Arah pergeseran : ");
scanf("%s", pergeseran);
while (*ppergeseran != '\0') {
*ppergeseran = tolower(*ppergeseran);
ppergeseran++;
}
ppergeseran = pergeseran;
} while ((strcmp(pergeseran, "kanan") != 0) && (strcmp(pergeseran, "kiri") !=0));
if(i>0) {
p = str;
//mengecilkan semua string
for(; *p!='\0'; p++) {
*p = tolower(*p);
}
// Pemanggian fungsi
enkripsi(str, pergeseran, i);
printf("\n Kalimat setelah di enkripsi: \n%s\n\n", str);
}
return EXIT_SUCCESS;
}
// Implementasi fungsi
void enkripsi(char *data, char *arah, int pergeseran){
int i;
// Jika pergeseran ke Kanan, maka karakter akan di tambah
if((strcmp(arah, "kanan")) == 0){
for(; *data!='\0'; data++){
// Spasi tidak akan di rubah
if(*data != ' '){
for(i=0; i<pergeseran; i++) {
// Jika sudah Z akan kembali ke A
if((*data) >= 'z'){
(*data) -= 26;
}
(*data)++;
}
}
}
}
// Jika pergeseran ke Kiri, lakukan sebaliknya
else if((strcmp(arah, "kiri")) == 0){
for(; *data!='\0'; data++){
// Spasi tidak akan di rubah
if(*data != ' '){
for(i=0; i<pergeseran; i++) {
// Jika sudah A akan kembali ke Z
if((*data) >= 'a'){
(*data) += 26;
}
(*data)--;
}
}
}
}
}Ini dia Output nya :
