Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- void genkey(char *key,char *result){
- int i,p = 0;
- char vis[30] = {0};
- for(i = 0;key[i];i++){
- if(isupper(key[i])){
- if(!vis[key[i] - 'A']){
- vis[key[i] - 'A'] = 1;
- result[p] = tolower(key[i]);
- p++;
- }
- }
- else{
- if(!vis[key[i] - 'a']){
- vis[key[i] - 'a'] = 1;
- result[p] = key[i];
- p++;
- }
- }
- }
- for(i = 0;i < 26;i++){
- if(!vis[i]){
- result[p] = i + 'a';
- p++;
- }
- }
- }
- void encrypt(char *table,char ch1,char ch2){
- int i1 = 0,i2 = 0;
- while(table[i1] != ch1)i1++;
- while(table[i2] != ch2)i2++;
- int x1 = i1 % 5,x2 = i2 % 5,y1 = i1 / 5,y2 = i2 / 5;
- if(x1 == x2){
- putchar(table[((y1 + 1) % 5) * 5 + x1]);
- putchar(table[((y2 + 1) % 5) * 5 + x2]);
- }
- else if(y1 == y2){
- putchar(table[y1 * 5 + (x1 + 1) % 5]);
- putchar(table[y1 * 5 + (x2 + 1) % 5]);
- }
- else{
- putchar(table[y1 * 5 + x2]);
- putchar(table[y2 * 5 + x1]);
- }
- }
- int main(int argc,char **argv){
- char buffer[30] = {0};
- char table[30] = {0};
- char data[256] = {0};
- scanf("%s",buffer);
- scanf("%s",data);
- genkey(buffer,table);
- int i = 0,n = strlen(data);
- while(i < n){
- if(i == n - 1 || tolower(data[i]) == tolower(data[i + 1])){
- encrypt(table,tolower(data[i]),'x');
- i += 1;
- }
- else{
- encrypt(table,tolower(data[i]),tolower(data[i + 1]));
- i += 2;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement