Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <limits.h>
- #define FRAME_SIZE UCHAR_MAX
- #define FRAMES_MAX UCHAR_MAX
- enum { FALSE, TRUE };
- typedef unsigned char mbt;
- _Bool meta_frame[FRAMES_MAX];
- mbt data_frame[FRAMES_MAX][FRAME_SIZE];
- mbt counter, subcounter;
- //Ищет совпадения с постепенным уменьшением требования к точности
- void net_work(mbt interface[FRAME_SIZE], _Bool meta)
- {
- mbt i = subcounter;
- do//Обход событий
- {
- if(memcmp(data_frame[i], interface, FRAME_SIZE) == 0)//Сравнивает события
- {
- if(meta_frame[i] == TRUE)
- {
- subcounter = i;
- memcpy(interface, data_frame[i], FRAME_SIZE);//Выдача результата через интерфейс
- break;
- }
- }
- i++;
- }
- while(i != subcounter);
- counter++;
- meta_frame[counter] = meta;
- memcpy(data_frame[counter], interface, FRAME_SIZE);//Запоминает событие
- }
- void save(void)
- {
- FILE * fp = fopen("brain.mb", "wb");
- if(fp != NULL)
- {
- fwrite(meta_frame, sizeof(_Bool), FRAMES_MAX, fp);
- fwrite(data_frame, sizeof(mbt), FRAMES_MAX * FRAME_SIZE, fp);
- fclose(fp);
- }
- }
- void load(void)
- {
- FILE * fp = fopen("brain.mb", "rb");
- if(fp != NULL)
- {
- fread(meta_frame, sizeof(_Bool), FRAMES_MAX, fp);
- fread(data_frame, sizeof(mbt), FRAMES_MAX * FRAME_SIZE, fp);
- fclose(fp);
- }
- else save();
- }
- void init(void)
- {
- memset(data_frame, 0, FRAMES_MAX * FRAME_SIZE);
- memset(meta_frame, 0, FRAMES_MAX);
- counter = 0;
- subcounter = 0;
- load();
- }
- int main(void)
- {
- char str[UCHAR_MAX];
- int i;
- init();
- for(i = 0; i < 10; i++)
- {
- memset(str, 0, UCHAR_MAX);
- printf("<< ");
- gets(str);
- net_work(str, TRUE);
- printf(">> %s\n", str);
- save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement