• помогите с шифром цезаря на си. Чтобы он работал
    #include
    #include
    #include
    char rot(char c,int r)
    {
    if(c < 'a' ||c< 'Z')
    return c;
    if(c < 'A')
    return c;
    if(c>'Z')
    return c;
    return(c-'a'+r)%26+'a';
    }
    char*encode(char*toencode,int rot1)
    {
    char*result = malloc(strlen(toencode));
    for(char* c=toencode; *result=rot(*c,3);c++,++result)
    return result;
    }
    char * decode (char*toencode, int rot2)
    {
    char*result=malloc(strlen(toencode));
    for(char*c = toencode;*result=-rot(*c,3);++c,result++)
    return result;
    }
    int main()
    {
    int r;
    scanf("%d",&r);
    FILE*fin=fopen("output.txt","r");
    FILE*fout=fopen ("input.txt","w");
    while(!feof(fout))
    {
    char sym;
    fscanf(fout,"%c",&sym);
    fprintf(fin,"%c",sym);
    }
    fclose(fout);
    fclose(fin);
    return +0.00000000000f;
    return 0;
    }
    10 балов

Ответы 1

  • 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include <stdio.h> #define is_upper(c)  ((c) >= 'A' && (c) <= 'Z') #define is_lower(c)  ((c) >= 'a' && (c) <= 'z') char* cesar_code(int k, char* s); char* cesar_decode(int k, char* s);     int main(void){     char s[] = "ABCDEF Hello World !!! END zero (XYZ)";     int    k = 15;       printf("source str: %s\n", s);     printf("coder  str: %s\n", cesar_code(k, s) );     printf("decode str: %s\n", cesar_decode(k, s) );     return 0; }   //шифратор char* cesar_code(int k, char* s){     int   i;     char* t = s;       k %= 26;     if(k < 0)         k = -k;       for(; *s; ++s){         if(is_lower(*s)){             i  = (*s - 'a' + k) % 26;             *s = 'a' + i;         } else if(is_upper(*s)){             i  = (*s - 'A' + k) % 26;             *s = 'A' + i;         }     }     return t; }   //дешифратор char* cesar_decode(int k, char* s){     int   i;     char* t = s;       k %= 26;     if(k < 0)         k = -k;       for(; *s; ++s){         if(is_lower(*s)){             i = *s - 'a' - k;             if(i < 0)                 i += 26;             *s = 'a' + i;         } else if(is_upper(*s)){             i = *s - 'A' - k;             if(i < 0)                 i += 26;             *s = 'A' + i;         }     }     return t; }

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #include <stdio.h> #define is_upper(c)  ((c) >= 'A' && (c) <= 'Z') #define is_lower(c)  ((c) >= 'a' && (c) <= 'z') char* cesar_code(int k, char* s); char* cesar_decode(int k, char* s);     int main(void){     char s[] = "ABCDEF Hello World !!! END zero (XYZ)";     int    k = 15;       printf("source str: %s\n", s);     printf("coder  str: %s\n", cesar_code(k, s) );     printf("decode str: %s\n", cesar_decode(k, s) );     return 0; }   //шифратор char* cesar_code(int k, char* s){     int   i;     char* t = s;       k %= 26;     if(k < 0)         k = -k;       for(; *s; ++s){         if(is_lower(*s)){             i  = (*s - 'a' + k) % 26;             *s = 'a' + i;         } else if(is_upper(*s)){             i  = (*s - 'A' + k) % 26;             *s = 'A' + i;         }     }     return t; }   //дешифратор char* cesar_decode(int k, char* s){     int   i;     char* t = s;       k %= 26;     if(k < 0)         k = -k;       for(; *s; ++s){         if(is_lower(*s)){             i = *s - 'a' - k;             if(i < 0)                 i += 26;             *s = 'a' + i;         } else if(is_upper(*s)){             i = *s - 'A' - k;             if(i < 0)                 i += 26;             *s = 'A' + i;         }     }     return t; }

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years