Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cs50.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- int main (int argc, string argv[])
- {
- if (argc != 2)//проверка на количество аргументов
- {
- printf("Invalid key!");
- return 1;
- }
- else
- {
- bool result_check = true;//переменная для проверки ключа, т.е. является ли он isalpha
- string k = argv[1];
- int str = strlen(k);
- for(int i = 0, n = strlen(k); i < n; i++) ////// цикл для проверки ключа на isalpha
- {
- if(!(isalpha(k[i])))
- {
- result_check = false;
- break;// слом массива, если есть цифры или другие символы, которые не являэтся isalpha
- }
- }
- if(result_check == true)
- {
- string p = GetString(); // входящий массив для шифрования
- string c = p;// выходной массив
- int b = 0;
- for (int i = 0, n = strlen(p); i < n; i++)
- {
- if(isalpha(p[i]))
- {
- if(islower(p[i]))// если буква входящего массива маленькая
- {
- if(islower(k[b % str]))///если буква ключа маленькая
- {
- c[i] = (((p[i] - 97) + (k[b % str] - 97)) % 26) + 97;
- b++;
- }
- else///если буква ключа заглавная
- {
- c[i] = (((p[i] - 97) + (k[b % str] - 65)) % 26) + 97;
- b++;
- }
- printf("%c",c[i]);
- }
- else // если буква входящего массива заглавная
- {
- if(islower(k[b % str]))/// если буква ключа маленькая
- {
- c[i] = (((p[i] - 65) + (k[b % str] - 97)) % 26) + 65;
- b++;
- }
- else///если буква ключа заглавная
- {
- c[i] = (((p[i] - 65) + (k[b % str] - 65)) % 26) + 65;
- b++;
- }
- printf("%c",c[i]);
- }
- }
- else
- {
- printf("%c", c[i]);
- }
- }
- }
- else
- {
- printf("Invalid key!");
- return 1;
- }
- printf("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement