Вопрос задан 06.10.2023 в 22:22. Предмет Информатика. Спрашивает Белецкая Ангелина.

Напишите программу на 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++:

cpp
#include <iostream> #include <string> int main() { int registers[4] = {0}; // Инициализация регистров R0, R1, R2 и R3 while (true) { std::string input; std::cout << "Введите команду (три десятичных цифры): "; std::cin >> input; if (input.size() != 3 || !isdigit(input[0]) || !isdigit(input[1]) || !isdigit(input[2])) { std::cout << "Неверный формат команды. Введите команду снова." << std::endl; continue; } int opcode = input[0] - '0'; int reg1 = input[1] - '0'; int reg2 = input[2] - '0'; switch (opcode) { case 1: // Код_операции 1: запись константы registers[reg1] = reg2; break; case 2: // Код_операции 2: копирование значения registers[reg2] = registers[reg1]; break; case 3: // Код_операции 3: сложение registers[reg1] += registers[reg2]; break; case 4: // Код_операции 4: вычитание registers[reg1] -= registers[reg2]; break; default: std::cout << "Неизвестный код операции. Введите команду снова." << std::endl; continue; } std::cout << "Регистры после выполнения команды:" << std::endl; for (int i = 0; i < 4; ++i) { std::cout << "R" << i << ": " << registers[i] << std::endl; } } return 0; }

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

0 0

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

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

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

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