Вопрос задан 17.07.2023 в 21:33. Предмет Информатика. Спрашивает Голиков Дмитрий.

60 балов Напишите программу на c++, которая моделирует работу процессора. Процессор имеет 4

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Романова Саша.

Ответ:#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;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ниже приведен пример программы на 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), как указано в задании. Значения всех регистров выводятся после выполнения каждой команды.

Пожалуйста, обратите внимание, что эта программа не предусматривает обработку ошибок, связанных с некорректным вводом данных. Если вам нужно обработать такие ошибки, вам следует добавить соответствующую логику проверки и обработки исключений.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос