Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба8 / Laba 9 (2)
.cpp#include <iostream>
#include <vector>
#include <locale>
using namespace std;
class ShiftRegisters {
private:
vector<int> x_reg, y_reg;
int x_size, y_size;
int x_pos, y_pos; // Позиции пересечения
public:
ShiftRegisters(int nx, int ny) : x_size(nx), y_size(ny), x_pos(0), y_pos(0) {
x_reg.resize(x_size, 0);
y_reg.resize(y_size, 0);
}
// Сдвиг с входным значением
int shift(int input) {
// Сдвиг регистра X
int x_out = x_reg.back();
for (int i = x_size - 1; i > 0; i--) {
x_reg[i] = x_reg[i - 1];
}
x_reg[0] = input;
// Сдвиг регистра Y (вход из X)
int y_out = y_reg.back();
for (int i = y_size - 1; i > 0; i--) {
y_reg[i] = y_reg[i - 1];
}
y_reg[0] = x_out;
return y_out;
}
// Смещение регистров
void shiftX(int delta) {
x_pos = max(0, min(x_size - 1, x_pos + delta));
}
void shiftY(int delta) {
y_pos = max(0, min(y_size - 1, y_pos + delta));
}
// Просмотр в форме кресла
void printChair() const {
cout << "Сдвиговые регистры:" << endl;
cout << "X: ";
for (int i = 0; i < x_size; i++) {
if (i == x_pos) cout << "[" << x_reg[i] << "] ";
else cout << x_reg[i] << " ";
}
cout << endl;
cout << "Y: ";
for (int i = 0; i < y_size; i++) {
if (i == y_pos) cout << "[" << y_reg[i] << "] ";
else cout << y_reg[i] << " ";
}
cout << endl;
}
};
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
ShiftRegisters sr(4, 3);
cout << "Тестирование сдвиговых регистров:" << endl;
for (int i = 1; i <= 5; i++) {
int output = sr.shift(i);
cout << "Вход: " << i << ", Выход: " << output << endl;
sr.printChair();
cout << endl;
}
return 0;
}
Соседние файлы в папке Лаба8
