#include #include #define BUFFER_SIZE 10 typedef struct { int buffer[BUFFER_SIZE]; int BufHead; int BufTail; } CircularBuffer; void initializeBuffer(CircularBuffer* cb) { cb->BufHead = 0; cb->BufTail = 0; } // Проверка, является ли буфер пустым int BufferEmpty(const CircularBuffer* cb) { return cb->BufHead == cb->BufTail; } // Проверка, является ли буфер полным int BufferFull(const CircularBuffer* cb) { return (cb->BufTail + 1) % BUFFER_SIZE == cb->BufHead;//проверяем слудеющее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывыедет true } // Запись элемента в буфер void writeBuffer(CircularBuffer* cb, int value) { if (BufferFull(cb)) { // проверка на заполненность return; } cb->buffer[cb->BufTail] = value;//записывает значение value в элемент массива buffer в хвост cb->BufTail = (cb->BufTail + 1) % BUFFER_SIZE;//присваивается cb->BufTail, обновляя его значение на следующий индекс в кольцевом буфере } // Чтение элемента из буфера int readBuffer(CircularBuffer* cb) { if (BufferEmpty(cb)) { //проверяет буффер на пустоту return -1;// -1 в качестве индикатора ошибки } int value = cb->buffer[cb->BufHead]; //читаем значение из массива по индексу головы cb->BufHead = (cb->BufHead + 1) % BUFFER_SIZE; //увеличиваем индекс головы +1 return value; }