
60 балов Напишите программу на c++, которая моделирует работу процессора. Процессор имеет 4
регист-ра, они обозначаются R0, R1, R2 и R3. Все команды состоят из трех десятичных цифр: код операции, номер первого регистра и номер второго регистра (или число от 0 до 9). Коды команд и примеры их использования приведены в таблице:Код операции Описание Пример Псевдокод1 запись константы 128 R2:=82 копирование значения 203 R3:=R03 сложение 331 R1:=R1+R34 вычитание 431 R1:=R1-R3Обратите внимание, что результат записывается во второй регистр. Команды вводятся последовательно как символьные строки. После ввода каждой строки программа показывает значения всех регистров.

Ответы на вопрос

Ответ:#include <bits/stdc++.h>
using namespace std;
int main() {
const int x = 3, y = 4;
int N[x], M[y] = { 0, 0, 0, 0 };
int r = 0;
do {
r = 0;
for (int q = 0; q < x; q++) {
N[q] = getchar() - 48;
if (N[q] == -38) q--;
if (N[q] == 0) r++;
}
switch (N[0]) {
case 1: M[N[1]] = N[2]; break;
case 2: M[N[2]] = M[N[1]]; break;
case 3: M[N[2]] = M[N[2]] + M[N[1]]; break;
case 4: M[N[2]] = M[N[2]] - M[N[1]]; break;
}
for (int e = 0; e < y; e++) {
cout << "R" << e << " = " << M[e] << "\n";
}
} while (r != x);
return 0;
}
Объяснение:



Ниже приведен пример программы на C++, моделирующей работу процессора с 4 регистрами:
cpp#include <iostream>
#include <string>
using namespace std;
int main() {
int R0 = 0, R1 = 0, R2 = 0, R3 = 0;
string command;
while (true) {
cout << "Введите команду (три цифры): ";
getline(cin, command);
if (command.length() != 3) {
cout << "Некорректная команда. Повторите ввод." << endl;
continue;
}
int opcode = command[0] - '0';
int reg1 = command[1] - '0';
int reg2 = command[2] - '0';
switch (opcode) {
case 1:
Rreg2 = reg1;
break;
case 2:
Rreg2 = Rreg1;
break;
case 3:
Rreg2 = Rreg1 + Rreg2;
break;
case 4:
Rreg2 = Rreg1 - Rreg2;
break;
default:
cout << "Некорректный код операции. Повторите ввод." << endl;
continue;
}
cout << "Значения регистров: R0=" << R0 << ", R1=" << R1 << ", R2=" << R2 << ", R3=" << R3 << endl;
}
return 0;
}
Программа запрашивает ввод команды в виде трех цифр и выполняет соответствующую операцию над регистрами. Результат операции сохраняется во втором регистре (R2), как указано в задании. Значения всех регистров выводятся после выполнения каждой команды.
Пожалуйста, обратите внимание, что эта программа не предусматривает обработку ошибок, связанных с некорректным вводом данных. Если вам нужно обработать такие ошибки, вам следует добавить соответствующую логику проверки и обработки исключений.


Похожие вопросы







Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili