Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба1 / Laba 1 (5)
.cpp#include <iostream>
#include <windows.h>
using namespace std;
class CircularBuffer {
private:
static const int SIZE = 1024;
double buffer[SIZE];
int head, tail, count;
public:
CircularBuffer() {
head = tail = count = 0;
cout << "Создан кольцевой буфер размером " << SIZE << " элементов" << endl;
}
void init() {
head = tail = count = 0;
cout << "Буфер инициализирован" << endl;
}
bool add(double value) {
if (count == SIZE) {
cout << "Ошибка: буфер полон!" << endl;
return false;
}
buffer[tail] = value;
tail = (tail + 1) % SIZE;
count++;
cout << "Добавлен элемент: " << value << endl;
return true;
}
bool remove(double &value) {
if (count == 0) {
cout << "Ошибка: буфер пуст!" << endl;
return false;
}
value = buffer[head];
head = (head + 1) % SIZE;
count--;
cout << "Извлечен элемент: " << value << endl;
return true;
}
int freeSpace() {
return SIZE - count;
}
int occupiedSpace() {
return count;
}
void printStatus() {
cout << "Занято места: " << occupiedSpace() << endl;
cout << "Свободно места: " << freeSpace() << endl;
}
};
int main() {
SetConsoleOutputCP(65001);
CircularBuffer cb;
cout << "=== Тестирование кольцевого буфера ===" << endl;
// Добавление элементов
for (int i = 0; i < 5; i++) {
cb.add(i * 1.5);
}
cb.printStatus();
cout << "\nИзвлечение элементов:" << endl;
double value;
while (cb.remove(value)) {
// Элементы извлекаются в цикле
}
cb.printStatus();
return 0;
}
Соседние файлы в папке Лаба1
