assistant
?>

Петя и вася придумали язык программирования "мозг". в нём используются 8 ячеек памяти, и есть следующие операторы: оператор действие > > перейти к следующей ячейке < < перейти к предыдущей ячейке ++ увеличить значение в текущей ячейке на 1 -− уменьшить значение в текущей ячейке на 1 [[ если значение текущей ячейки ноль, перейти вперёд по тексту программы на ячейку, следующую за соответствующей ] (с учётом вложенности) ]] если значение текущей ячейки не ноль, перейти назад по тексту программы на символ [ (с учётом вложенности) .. напечатать значение из текущей ячейки исполнение программы начинается с третей ячейки. на момент запуска ячейки имеют следующие значения: номер ячейки 1 2 3 4 5 6 7 8 значение 10 330 50 19 17 0 184 0 запишите число, которое выведет программа: [-> [-> +> +< < ]> > [-< +< +> > ]< < < ]> > .[−> [−> +> +< < ]> > [−< +< +> > ]< < < ]> > . примечание: под вложенностью операторов [ и ] подразумевается однозначное соответствие оператора [ к оператору ] и наоборот по аналогии с открывающими и закрывающими скобками из . пример: для программы [-> +[-]< ][−> +[−]< ] первая открывающая квадратная скобка соответствует второй закрывающей квадратной скобке, а вторая открывающая квадратная скобка соответствует первой закрывающей квадратной скобке.

Информатика

Ответы

adrinalin991
В принципе, можно расписать, что делает эта программа (см. вложение). Так как изначально 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 ячеек памяти, и есть следую
Jannadon77
#include <conio.h>
#include <iostream>
using namespace std;

int main()
{   
           int a[12],k;   
           cout<<"Massive before: ";   
           srand(time(NULL));   
           for(int i=0;i<12;i++)   
           {       
                    a[i]=(rand() % 25 -12);       
                    cout<<a[i]<<" ";       
                    if((i+1)%4==0) cout<<" | ";   
           }
           for(int j=0;j<3;j++)   
           {       
                      for(int i=0;i<2;i++)       
                      {           
                      k=a[j*4+i];           
                      a[j*4+i]=a[3+j*4-i];           
                      a[3+j*4-i]=k;       
                      }   
           }     
          cout<<endl<<"Massive       : ";   
          for(int i=0;i<12;i++)   
          {       
                       cout<<a[i]<<" ";       
                       if((i+1)%4==0) cout<<" | ";   
           }       
           getch();   
           return 0;
nadezhdasvirina
Int a[50],summa=0;                                                                                                   for(int i=0;i<50;i++)                                                                                                    { a[i]=rand();                                                                                                              if(a[i]==0)  summa++;                                                                                               cout<<"Количество равно "<<summa<<"\n";                

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Петя и вася придумали язык программирования "мозг". в нём используются 8 ячеек памяти, и есть следующие операторы: оператор действие > > перейти к следующей ячейке < < перейти к предыдущей ячейке ++ увеличить значение в текущей ячейке на 1 -− уменьшить значение в текущей ячейке на 1 [[ если значение текущей ячейки ноль, перейти вперёд по тексту программы на ячейку, следующую за соответствующей ] (с учётом вложенности) ]] если значение текущей ячейки не ноль, перейти назад по тексту программы на символ [ (с учётом вложенности) .. напечатать значение из текущей ячейки исполнение программы начинается с третей ячейки. на момент запуска ячейки имеют следующие значения: номер ячейки 1 2 3 4 5 6 7 8 значение 10 330 50 19 17 0 184 0 запишите число, которое выведет программа: [-> [-> +> +< < ]> > [-< +< +> > ]< < < ]> > .[−> [−> +> +< < ]> > [−< +< +> > ]< < < ]> > . примечание: под вложенностью операторов [ и ] подразумевается однозначное соответствие оператора [ к оператору ] и наоборот по аналогии с открывающими и закрывающими скобками из . пример: для программы [-> +[-]< ][−> +[−]< ] первая открывающая квадратная скобка соответствует второй закрывающей квадратной скобке, а вторая открывающая квадратная скобка соответствует первой закрывающей квадратной скобке.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

mmoskow3
Суховодова599
lakeeva90
Yevgenii1423
krylova-natali
manuchar-formen2
gunel1988alieva
dg9792794674
kifstd
Zakharov Lilit
Boykoyelena
tigran87-87
roman-fetisov2005
nkochladze
Shevchenko