Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.21 Кб
Скачать
#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