Advertisement
Guest User

Untitled

a guest
May 5th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.00 KB | None | 0 0
  1. #include <cs50.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <ctype.h>
  6.  
  7.  
  8. int main (int argc, string argv[])
  9.  
  10. {
  11.    
  12.      if (argc != 2)//проверка на количество аргументов
  13.     {
  14.         printf("Invalid key!");
  15.         return 1;
  16.     }
  17.     else
  18.     {
  19.         bool result_check = true;//переменная для проверки ключа, т.е. является ли он isalpha
  20.         string k = argv[1];
  21.         int str = strlen(k);
  22.        
  23.         for(int i = 0, n = strlen(k); i < n; i++) ////// цикл для проверки ключа на isalpha
  24.         {
  25.             if(!(isalpha(k[i])))
  26.             {
  27.                 result_check = false;
  28.                 break;// слом массива, если есть цифры или другие символы, которые не являэтся isalpha
  29.             }
  30.         }
  31.        
  32.         if(result_check == true)
  33.         {
  34.             string p = GetString(); // входящий массив для шифрования
  35.             string c = p;// выходной массив
  36.            
  37.             int b = 0;
  38.             for (int i = 0, n = strlen(p); i < n; i++)
  39.             {
  40.                 if(isalpha(p[i]))
  41.                 {
  42.                     if(islower(p[i]))// если буква входящего массива маленькая
  43.                     {
  44.                         if(islower(k[b % str]))///если буква ключа маленькая
  45.                         {
  46.                             c[i] = (((p[i] - 97) + (k[b % str] - 97)) % 26) + 97;
  47.                             b++;
  48.                         }
  49.                         else///если буква ключа заглавная
  50.                         {
  51.                             c[i] = (((p[i] - 97) + (k[b % str] - 65)) % 26) + 97;
  52.                             b++;
  53.                         }
  54.                         printf("%c",c[i]);
  55.                     }
  56.                     else // если буква входящего массива заглавная
  57.                     {
  58.                         if(islower(k[b % str]))/// если буква ключа маленькая
  59.                         {
  60.                             c[i] = (((p[i] - 65) + (k[b % str] - 97)) % 26) + 65;
  61.                             b++;
  62.                         }
  63.                         else///если буква ключа заглавная
  64.                         {
  65.                             c[i] = (((p[i] - 65) + (k[b % str] - 65)) % 26) + 65;
  66.                             b++;
  67.                         }
  68.                         printf("%c",c[i]);
  69.                     }
  70.                
  71.                 }
  72.                 else
  73.                 {
  74.                     printf("%c", c[i]);
  75.                 }
  76.             }
  77.         }
  78.         else
  79.         {
  80.             printf("Invalid key!");
  81.             return 1;
  82.         }
  83.            
  84.         printf("\n");
  85.     }
  86.    
  87.    
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement