Advertisement
Guest User

semen

a guest
Dec 3rd, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4.  
  5. int main(){
  6.     char cislo_pismene, letter1, letter2;
  7.     int a = 0;
  8.     int b = 0;
  9.     char *x;
  10.     char *y;
  11.     int n = 2;
  12.     int m = 2;
  13.     int nejlepsi_posun = 0;
  14.     int pocet_stejnych = 0;
  15.     int nejvic_stejnych = 0;
  16.     x = (char*)malloc(sizeof(char));
  17.     y = (char*)malloc(sizeof(char));
  18.  
  19. // nacteni prvniho radku
  20.  
  21.     while((letter1 = getchar()) != '\n'){
  22.         if(isalpha(letter1) != 0){
  23.             x[a] = letter1;
  24.             ++a;
  25.             x = (char*)realloc(x, n * (sizeof(char)));
  26.             ++n;
  27.         }
  28.         if(isalpha(letter1) == 0 && letter1 != '\n'){
  29.             free(x);
  30.             free(y);
  31.             fprintf(stderr,"Error: Chybny vstup!\n");
  32.             return 100;
  33.         }
  34.     }
  35.  
  36. // nacteni druheho radku
  37.  
  38.     while((letter2 = getchar()) != '\n'){
  39.         if(isalpha(letter2) != 0){
  40.             y[b] = letter2;
  41.             ++b;
  42.             y = (char*)realloc(y, m * (sizeof(char)));
  43.             ++m;
  44.         }
  45.         if(isalpha(letter2) == 0 && letter2 != '\n'){
  46.             free(x);
  47.             free(y);
  48.             fprintf(stderr,"Error: Chybny vstup!\n");
  49.             return 100;
  50.         }
  51.        
  52.     }
  53.     if(a != b){
  54.             free(x);
  55.             free(y);
  56.             fprintf(stderr,"Error: Chybna delka vstupu");
  57.             return 101;
  58.         }
  59.     for(int posun = 0; posun < 52; ++posun){           // projede pro posun o pocet malych a velkych pismen v abecede tj. 52
  60.         for(int i = 0; i < a; ++i){              // projede pismena v poli z prvniho radku
  61.             cislo_pismene = x[i];
  62.             if((cislo_pismene + posun) > 90 && (cislo_pismene + posun) < 97){           // mezera mezi velkym Z a malym a
  63.                 cislo_pismene = cislo_pismene + 6;
  64.             }
  65.             if((cislo_pismene + posun) > 122){           // aby to nevylezlo z pismen
  66.                 cislo_pismene = cislo_pismene - 58;
  67.             }
  68.             if((cislo_pismene + posun) == y[i]){         // pokud je pismeno stejny jako v odposlechu tak se da +1 pocet stejnych
  69.                 ++pocet_stejnych;
  70.             }      
  71.         }
  72.         if(pocet_stejnych > nejvic_stejnych){  
  73.             nejlepsi_posun = posun;                  // pokud je
  74.             nejvic_stejnych = pocet_stejnych;      
  75.         }
  76.     }
  77.     for(int i = 0; i < a; ++i){
  78.         cislo_pismene = x[i];
  79.         if((cislo_pismene + nejlepsi_posun) > 90 && (cislo_pismene + nejlepsi_posun) < 97){
  80.             cislo_pismene = cislo_pismene + 6;
  81.         }
  82.         if((cislo_pismene + nejlepsi_posun) > 122){
  83.             cislo_pismene = cislo_pismene - 58;
  84.         }
  85.         printf("%c", cislo_pismene + nejlepsi_posun);
  86.     }
  87.     printf("\n");
  88.     free(x);
  89.     free(y);
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement