Advertisement
JuliaPopadowska

zad 7/14 PN

Jun 3rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. unsigned char ctob(char *tab) {
  2.  
  3.     unsigned char wynik=0;
  4.  
  5.  
  6.     for (int i = 0; i < 4; i++) {
  7.         switch (tab[i])
  8.         {
  9.             case 'A':
  10.                 wynik <<= 2;
  11.             break;
  12.  
  13.             case 'C':
  14.                 wynik <<= 2;
  15.                 wynik |= 1;
  16.             break;
  17.             case 'G':
  18.                 wynik <<= 2;
  19.                 wynik |= 2;
  20.             break;
  21.             case 'T':
  22.                 wynik <<= 2;
  23.                 wynik |= 3;
  24.             break;
  25.             default:
  26.                 break;
  27.             }
  28.     }
  29.  
  30.     return wynik;
  31. }
  32.  
  33. void btoc(unsigned char wynik, char *wynik2) {
  34.  
  35.     int Tp[] = { 6, 4, 2, 0 };
  36.     char Tw[] = { 'A', 'C', 'G', 'T' };
  37.    
  38.  
  39.     for (int i = 0; i < 4; i++) {
  40.         wynik2[i] = Tw[(wynik >> Tp[i]) & 3];
  41.     }
  42.     wynik2[4] = '\n';
  43. }
  44.  
  45.  
  46.  
  47. void Z7_14() {
  48.     FILE *I;
  49.     FILE *O;
  50.     char plik1[16];
  51.     char plik2[16];
  52.     char tab[5];
  53.     unsigned char wynik = 0;
  54.     int wyb;
  55.  
  56.     printf_s("Podaj nazwe pliku wejscia \n");
  57.     scanf_s("%s", &plik1, 15);
  58.  
  59.     printf_s("Podaj nazwe pliku wyjsciowego \n");
  60.     scanf_s("%s", &plik2, 15);
  61.  
  62.  
  63.     printf_s("Wybierz opcje: \n");
  64.     printf_s("1 - Koduj \n");
  65.     printf_s("2 - Dekoduj \n");
  66.     scanf_s("%d", &wyb);
  67.  
  68.     if (wyb == 1) { // kodowanie
  69.  
  70.         fopen_s(&I, plik1, "rt");
  71.         fopen_s(&O, plik2, "wb");
  72.  
  73.         fscanf_s(I, "%s", tab, 5);
  74.         while (feof(I) == 0)
  75.         {
  76.             wynik = ctob(tab);
  77.  
  78.             fputc(wynik, O);
  79.  
  80.             fscanf_s(I, "%s", tab, 5);
  81.         };
  82.  
  83.  
  84.     }
  85.     else if (wyb == 2) { // dekodowanie
  86.         fopen_s(&I, plik1, "rb");
  87.         fopen_s(&O, plik2, "wt");
  88.        
  89.  
  90.         wynik = fgetc(I);
  91.         while (feof(I) == 0)
  92.         {
  93.             btoc(wynik, tab);
  94.  
  95.             fprintf(O, "%s", tab);
  96.  
  97.             wynik = fgetc(I);
  98.         };
  99.  
  100.  
  101.  
  102.  
  103.     }
  104.     else {
  105.         printf_s("Nie ma takiej opcji");
  106.     }
  107.  
  108.  
  109.  
  110.     fclose(I);
  111.     fclose(O);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement