Advertisement
Guest User

Untitled

a guest
Jul 18th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.83 KB | None | 0 0
  1. #include    <stdio.h>
  2. #include    <string.h>
  3. #include    <limits.h>
  4.  
  5. #define     FRAME_SIZE      UCHAR_MAX
  6. #define     FRAMES_MAX      UCHAR_MAX
  7.  
  8. enum { FALSE, TRUE };
  9.  
  10. typedef     unsigned char   mbt;
  11.  
  12. _Bool   meta_frame[FRAMES_MAX];
  13. mbt     data_frame[FRAMES_MAX][FRAME_SIZE];
  14. mbt     counter, subcounter;
  15.  
  16. //Ищет совпадения с постепенным уменьшением требования к точности
  17. void net_work(mbt interface[FRAME_SIZE], _Bool meta)
  18. {
  19.     mbt i = subcounter;
  20.    
  21.     do//Обход событий
  22.     {
  23.         if(memcmp(data_frame[i], interface, FRAME_SIZE) == 0)//Сравнивает события
  24.         {
  25.             if(meta_frame[i] == TRUE)
  26.             {
  27.                 subcounter = i;
  28.                 memcpy(interface, data_frame[i], FRAME_SIZE);//Выдача результата через интерфейс
  29.                 break;
  30.             }
  31.         }
  32.         i++;
  33.     }
  34.     while(i != subcounter);
  35.    
  36.     counter++;
  37.     meta_frame[counter] = meta;
  38.     memcpy(data_frame[counter], interface, FRAME_SIZE);//Запоминает событие
  39. }
  40.  
  41. void save(void)
  42. {
  43.     FILE * fp = fopen("brain.mb", "wb");
  44.    
  45.     if(fp != NULL)
  46.     {
  47.         fwrite(meta_frame, sizeof(_Bool), FRAMES_MAX, fp);
  48.         fwrite(data_frame, sizeof(mbt), FRAMES_MAX * FRAME_SIZE, fp);
  49.         fclose(fp);
  50.     }
  51. }
  52.  
  53. void load(void)
  54. {
  55.     FILE * fp = fopen("brain.mb", "rb");
  56.    
  57.     if(fp != NULL)
  58.     {
  59.         fread(meta_frame, sizeof(_Bool), FRAMES_MAX, fp);
  60.         fread(data_frame, sizeof(mbt), FRAMES_MAX * FRAME_SIZE, fp);
  61.         fclose(fp);
  62.     }
  63.     else save();
  64. }
  65.  
  66. void init(void)
  67. {
  68.     memset(data_frame, 0, FRAMES_MAX * FRAME_SIZE);
  69.     memset(meta_frame, 0, FRAMES_MAX);
  70.     counter = 0;
  71.     subcounter = 0;
  72.     load();
  73. }
  74.  
  75. int main(void)
  76. {
  77.     char    str[UCHAR_MAX];
  78.     int     i;
  79.  
  80.     init();
  81.    
  82.     for(i = 0; i < 10; i++)
  83.     {
  84.         memset(str, 0, UCHAR_MAX);
  85.         printf("<< ");
  86.         gets(str); 
  87.         net_work(str, TRUE);
  88.         printf(">> %s\n", str);
  89.         save();
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement