Advertisement
Di62028

Decodificador.c

Mar 21st, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. typedef struct {
  5.    char posicao1;
  6.    char posicao2;
  7. } bloco;
  8.  
  9. void desloca3Letras(char *palavra)
  10. {
  11.     //char palavra[30], aux[30];
  12.     char aux[30];
  13.     int i = 0, chave = -3;
  14.  
  15.     while(palavra[i] != '\0')
  16.     {
  17.         aux[i] = palavra[i];
  18.         if (aux[i] == 35)
  19.         {
  20.             aux[i] = 32;
  21.         }
  22.         if (aux[i] <= 122 && aux[i] >= 97)
  23.         {
  24.             aux[i] = palavra[i] + chave;
  25.             if((palavra[i] + chave) > 122)
  26.             {
  27.                 aux[i] -=26;
  28.             }
  29.             if((palavra[i] + chave) < 97)
  30.             {
  31.                 aux[i] += 26;
  32.             }
  33.         }
  34.         if (aux[i] <= 90 && aux[i] >= 65)
  35.         {
  36.             aux[i] = palavra[i] + chave;
  37.             if((palavra[i] + chave) > 90)
  38.             {
  39.                 aux[i] -=26;
  40.             }
  41.             if((palavra[i] + chave) < 65)
  42.             {
  43.                 aux[i] += 26;
  44.             }
  45.         }
  46.     i++;
  47.     }
  48.     aux[i] = '\0';
  49.     printf("3 letras desloc: %s ", aux);
  50.  
  51.     for(int a = 0; a <= i; a++)
  52.     {
  53.         palavra[a] = aux[a];
  54.     }
  55.  
  56.     printf("\n");
  57. }
  58.  
  59. void trocarBlocos(bloco *b1_ptr, int tamanho)
  60. {
  61.     bloco auxiliar[tamanho];
  62.  
  63.     for (int i = 0; i < tamanho; i++)
  64.     {
  65.         auxiliar[i] = b1_ptr[i];
  66.     }
  67.  
  68.  
  69.     if (tamanho%2 != 0)
  70.     {
  71.         for (int i = 0; i < (tamanho-1)/2; i++)
  72.         {
  73.             b1_ptr[i] = auxiliar[tamanho - i - 1];
  74.             b1_ptr[tamanho - i - 1] = auxiliar[i];
  75.         }
  76.     }
  77.     if (tamanho%2 == 0)
  78.     {
  79.         for (int i = 0; i < (tamanho)/2; i++)
  80.         {
  81.             b1_ptr[i] = auxiliar[tamanho - i - 1];
  82.             b1_ptr[tamanho - i - 1] = auxiliar[i];
  83.         }
  84.     }
  85. }
  86.  
  87.  
  88. void trocarBlocos2(bloco *b1_ptr, int tamanho)
  89. {
  90.     bloco auxiliar[tamanho];
  91.  
  92.     for (int i = 0; i < tamanho; i++)
  93.     {
  94.         auxiliar[i] = b1_ptr[i];
  95.     }
  96.  
  97.     b1_ptr[0] = auxiliar[tamanho - 0 - 1];
  98.     b1_ptr[tamanho - 0 - 1] = auxiliar[0];
  99. }
  100.  
  101.  
  102. void trocarPosicoes(bloco *b1)
  103. {
  104.     char aux;
  105.     aux = b1->posicao2;
  106.     b1->posicao2 = b1->posicao1;
  107.     b1->posicao1 = aux;
  108. }
  109.  
  110. void imprimeValorASCII()
  111. {
  112.     char Ch;
  113.     Ch='#';
  114.     printf ("%d",Ch);  /* Imprime o caracter como inteiro */
  115.  
  116. }
  117.  
  118. void imprimeResultado(bloco *b1_ptr, int tamanho)
  119. {
  120.  
  121.     bloco auxiliar[tamanho];
  122.  
  123.     for (int i = 0; i < tamanho; i++)
  124.     {
  125.         auxiliar[i] = b1_ptr[i];
  126.     }
  127.  
  128.  
  129.     printf("\n\n");
  130.     for (int i = 0; i < tamanho; i++)
  131.     {
  132.         printf("%c", auxiliar[i].posicao1);
  133.         printf("%c", auxiliar[i].posicao2);
  134.     }
  135. }
  136.  
  137. int main(int argc, char *argv[]){
  138.  
  139.     char frase[1000];
  140.     printf("--------------------\n");
  141.     printf("Mensagem codificada:\n");
  142.     scanf(" %s", frase);
  143.     printf("--------------------\n");
  144.  
  145.  
  146.     ///Deslocar 3 letras:
  147.     desloca3Letras(frase);
  148.  
  149.  
  150.     ///Colocar em blocos
  151.     bloco vet_de_blocos[strlen(frase)/2];
  152.  
  153.     int j = 0;
  154.     for (int i = 0; i < (strlen(frase)/2); i++)
  155.     {
  156.         vet_de_blocos[i].posicao1 = frase[j];
  157.         vet_de_blocos[i].posicao2 = frase[j+1];
  158.         j += 2;
  159.     }
  160.  
  161.  
  162.     printf("\nchave: %c ", vet_de_blocos[0].posicao1);
  163.     ///Trocar as posições dentro dos blocos de lugar
  164.  
  165.     for (int i = 0; i < (strlen(frase)/2); i++)
  166.     {
  167.         trocarPosicoes(&vet_de_blocos[i]);
  168.     }
  169.     printf("\nchave: %c ", vet_de_blocos[0].posicao1);
  170.  
  171.  
  172.     ///Trocar os blocos de lugar
  173.     //trocarBlocos(&vet_de_blocos, (strlen(frase)/2));
  174.     trocarBlocos2(&vet_de_blocos, (strlen(frase)/2));
  175.  
  176.  
  177.     ///Imprimir Resultado
  178.     imprimeResultado(&vet_de_blocos, (strlen(frase)/2));
  179.  
  180.     return 0;
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement