Advertisement
Guest User

linbinkoder

a guest
Jan 19th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdio.h>
  3.  
  4. int main(int argc, char *argv[]) {
  5.  
  6.     int g[8][16] = { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1 },
  7.     { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ,1 ,1, 1 },
  8.     { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0 },
  9.     { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1 },
  10.     { 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1 },
  11.     { 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0 },
  12.     { 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0 },
  13.     { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0 } };
  14.  
  15.     FILE *ulazna, *izlazna;
  16.     int i=0, k;
  17.     char poc[100];
  18.     char *p;
  19.     gets(poc);
  20.  
  21.     for (p = strtok(poc, " "); p; p = strtok(NULL, " ")) {
  22.         if (i == 0) {
  23.             printf("%s\n", p);
  24.             ulazna = fopen(p, "r");
  25.             if (ulazna == NULL) {
  26.                 printf("Greska prilikom otvaranja datoteke.");
  27.                 return 0;
  28.             }
  29.         }
  30.         else {
  31.             printf("%s\n", p);
  32.             izlazna = fopen(p, "wb");
  33.                 if (izlazna == NULL) {
  34.                     printf("Greška prilikom otvaranja datoteke.");
  35.                     return 0;
  36.                 }
  37.         }
  38.         i++;
  39.     }
  40.    
  41.     int c;
  42.     while ((c = fgetc(ulazna)) != EOF) //ciranje znak po znak
  43.     {
  44.         int m = ((int)c);
  45.         int result[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  46.         int polje[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
  47.         int z = 7;
  48.         int pom = 0;
  49.         short znak = 0;
  50.        
  51.         //binarni zapis procitanog znaka sa ulaza
  52.         while (m != 0) {
  53.             pom = m % 2;
  54.             m /= 2;
  55.             polje[z] = ((char)pom);
  56.             z--;
  57.         }
  58.  
  59.         //mnozenje matrice i ulaznog znaka
  60.         for (int i = 0; i < 16; i++)
  61.         {
  62.             for (int k = 0; k < 8; k++)
  63.             {
  64.                 result[i] ^= (polje[k] * g[k][i]); 
  65.             }
  66.         }
  67.  
  68.    
  69.  
  70.         for (int i = 0; i < 16; i++) {
  71.             znak = (znak << 1);
  72.             znak += result[i];
  73.         }
  74.  
  75.         fwrite(&znak, sizeof(short), 1, izlazna);
  76.     }
  77.     return 0;
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement