failbulkhin2017
20.07.2021 10:54

Напишите программу, которая складывает две матрицы. Сложение матриц определено так: A + B = C, если для любого элемента A[i][j] и B[i][j] суммарная матрица С[i][j] = A[i][j] + B[i][j] (то есть, мы просто складываем элементы матриц, находящиеся на одних позициях). На вход подаются два целых числа, N и M - размерность будущих матриц (N строк, M столбцов). Потом с новой строки вводятся элементы матрицы А, потом пустая строка, и с новой строки - элементы матрицы B. Нужно напечатать их сумму, в качестве разделителя в строке используйте пробел (как в лекции).

размер матрицы 2 на 3
и вот сами матрицы:
первая матрица:
[1 2 3],[4 5 6]
вторая матрица:
[5 3 2], [2 0 1]

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально a[6] = 0, то a[3] = 50 раз к a[5] прибавится 2 * a[4] = 38, получится 38 * 50 + a[5] = 1917, затем значение a[5] будет выведено на экран.

Но проще не мучиться и просто написать программу, выполняющую этот код.

python 3.
array = [10, 330, 50, 19, 17, 0, 184, 0]
array_position = 2
program = "[->[->+>+<<]>>[-<+<+>>]<<<]>>."

stack = []
transitions = [None] * len(program)
for k, op in enumerate(program):
    if op == '[':
        stack.append(k)
    elif op == ']':
        v = stack.pop()
        transitions[k] = v + 1
        transitions[v] = k + 1
 
k = 0
while k < len(program):
    op = program[k]
    if op == '.':
        print(array[array_position])
    elif op == '>':
        array_position += 1
    elif op == '<':
        array_position -= 1
    elif op == '[' and array[array_position] == 0:
        k = transitions[k]
        continue
    elif op == ']' and array[array_position] != 0:
        k = transitions[k]
        continue
    elif op == '+':
        array[array_position] += 1
    elif op == '-':
        array[array_position] -= 1
    k += 1
Петя и вася придумали язык программирования мозг. в нём используются 8 ячеек памяти, и есть следую
0,0(0 оценок)
Ответ:
Pepsi34
29.06.2020 10:58
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально a[6] = 0, то a[3] = 50 раз к a[5] прибавится 2 * a[4] = 38, получится 38 * 50 + a[5] = 1917, затем значение a[5] будет выведено на экран.

Но проще не мучиться и просто написать программу, выполняющую этот код.

python 3.
array = [10, 330, 50, 19, 17, 0, 184, 0]
array_position = 2
program = "[->[->+>+<<]>>[-<+<+>>]<<<]>>."

stack = []
transitions = [None] * len(program)
for k, op in enumerate(program):
    if op == '[':
        stack.append(k)
    elif op == ']':
        v = stack.pop()
        transitions[k] = v + 1
        transitions[v] = k + 1
 
k = 0
while k < len(program):
    op = program[k]
    if op == '.':
        print(array[array_position])
    elif op == '>':
        array_position += 1
    elif op == '<':
        array_position -= 1
    elif op == '[' and array[array_position] == 0:
        k = transitions[k]
        continue
    elif op == ']' and array[array_position] != 0:
        k = transitions[k]
        continue
    elif op == '+':
        array[array_position] += 1
    elif op == '-':
        array[array_position] -= 1
    k += 1
Петя и вася придумали язык программирования мозг. в нём используются 8 ячеек памяти, и есть следую
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота