mrnn_

4305 Oszloponként cserélő kódolás és dekódolás

Nov 23rd, 2014
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. // 4305 - Oszloponként cserélő kódolás és dekódolás - Bíró: 20 pont
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. void kodolas(int N, int M, int* order, char* nyers, char* kodolt)
  7.     {
  8.         int i,j,k=0;
  9.         for(i=0;i<M;i++)
  10.         {
  11.             for(j=0;j<N;j++)
  12.             {
  13.                     kodolt[k]=nyers[j*M+(order[i]-1)];
  14.                     k++;
  15.             }
  16.         }
  17.         kodolt[k]='\0';
  18.     }
  19. void dekodolas(int N, int M, int* order, char* kodolt, char* dekodolt)
  20.     {
  21.         int i,j,k=0;
  22.         {
  23.             for(i=0;i<M;i++)
  24.             {
  25.                 for(j=0;j<N;j++)
  26.                 {
  27.                  dekodolt[j*M+(order[i]-1)]= kodolt[k];
  28.                  k++;
  29.                 }
  30.             }
  31.         }
  32.         dekodolt[k]='\0';
  33.     }
  34.  
  35.  
  36. int main()
  37. {
  38.     FILE *be = fopen("be.txt", "r");
  39.  
  40.     if(be==NULL)
  41.     {
  42.      printf("Hiba a megnyitasnal!\n");
  43.      return -1;
  44.     }
  45.  
  46.     int kod,i,l=0,N,M;
  47.  
  48.  
  49.     fscanf(be, "%d %d", &kod, &M);
  50.  
  51.     int *order;
  52.     char *str, *ered;
  53.     str= malloc(200*sizeof(char));
  54.     order= malloc(M*sizeof(int));
  55.     for(i=0;i<M;i++)
  56.     {
  57.         fscanf(be,"%d", &order[i]);
  58.     }
  59.     fscanf(be,"%s", str);
  60.  
  61.     for(i=0;str[i]!='\0';i++)
  62.     {
  63.         l++;
  64.     }
  65.     N=l/M;
  66.     l++;
  67.     ered= malloc(l*sizeof(char));
  68.     if(kod==1) kodolas(N,M,order,str,ered);
  69.     if(kod==2) dekodolas(N,M,order,str,ered);
  70.     FILE* ki=fopen("ki.txt", "w");
  71.     fprintf(ki,"%s", ered);
  72.     fprintf(ki,"\n");
  73.  
  74.  
  75.     free(str);
  76.     free(ered);
  77.     free(order);
  78.  
  79.     fclose(be);
  80.     fclose(ki);
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment