В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Taimy
Taimy
13.04.2022 22:52 •  Информатика

Напишите программу, которая моделирует работу процессора. процессор имеет 4 регистра, они обозначаются r0, r1, r2 и r3. все команды состоят из трех десятичных цифр: код операции, номер первого регистра и номер второго регистра (или число от 0 до 9). коды команд и примеры их использования в таблице:
код операции

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

2. *добавьте в систему команд умножение, деление и логические операции c регистрами – «и», «или», «исключающее или».

3. *добавьте в систему команд логическую операцию «не». подумайте, как можно использовать второй регистр.

4. *сделайте так, чтобы в команде с кодом 1 можно было использовать шестнадцатеричные значения констант (0-9, a-f).

5. добавьте обработку ошибок типа «неверная команда», «неверный номер регистра», «деление на ноль».
в питоне

Показать ответ
Ответ:
Викусик11112234556
Викусик11112234556
27.08.2021 02:45
Можно и короче, но так нагляднее:
#include <stdlib.h>
#include <iostream>
using namespace std;

int main() {
const int n=6;
int a;
int b;
int c;
int arr[n]={-3, -2, -1, 1, 2, 3};
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;

srand(time(0));
a = rand() % 6;
cout << "(" << a << ")" << " a = " << arr[a] << endl;
if (a != 0) b = rand() % a; else b=0;
cout << " b = " << b << " (" << arr[a-b] << " этаж)" << endl;
if ((n-a+b) != 0) c = rand() % (n-a+b); else c=0;
cout << " c = " << c << " (" << arr[a-b+c] << " этаж)" << endl;
}

Пример:
-3 -2 -1 1 2 3
 (5) a = 3
 b = 4 (-2 этаж)
 c = 2 (1 этаж)

Если этажей может быть много (до 100), то подробное решение может быть таким:
#include <stdlib.h>
#include <iostream>
using namespace std;

int main() {
int n, n1, a, b, c;
int a1, a2, a3;

srand(time(0));
n = (rand() % 50 + 1)*2;
n1 = n/2;
cout << " n = " << n << " (" << -n1 << " ... " << n1 << ")" << endl;
a1 = rand() % n;
a = a1-n1;
if (a <= 0) a--;
cout << " a = " << a << endl;
b = rand() % a1;
a2 = a1-b-n1; 
if (a2 <= 0) a2--; 
cout << " b = " << b << " (" << a2 << " этаж)" << endl;
if ((n-a1+b) != 0) c = rand() % (n-a1+b); else c=0;
a3 = a1-b+c-n1;
if (a3 <= 0) a3--; 
cout << " c = " << c << " (" << a3 << " этаж)" << endl;
}

Пример:
n = 96 (-48 ... 48)
a = -38
b = 9 (-47 этаж)
c = 83 (37 этаж)
0,0(0 оценок)
Ответ:
iga5
iga5
20.04.2023 10:57
Гарантируется правильная работа программы при вводе натуральных чисел, не превышающих 9 223 372 030 926 249 001

var
  i,n,m:int64;
begin
  Write('Вводите: ');
  Read(m);
  n:=0;
  for i:=1 to m div 2 do
    begin
      n:=n+2*i-1;
      if (n>=m) then break
    end;
  if n=m then Writeln('Кв.корень(',m,')=',i)
  else Writeln('Кв.корень(',m,') не является целочисленным')
end.

Примеры работы программы

Вводите: 255240500157504
Кв.корень(255240500157504)=15976248

Вводите: 225
Кв.корень(225)=15

Вводите: 56846356333463
Кв.корень(56846356333463) не является целочисленным

Вводите: 9223372030926249001
Кв.корень(9223372030926249001)=3037000499
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота