program-enkripsi-string-dengan-bahasa-c

Program Enkripsi String Dengan Bahasa C

Programing

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 :

Recent Post