fork(1) download
  1. #include <stdio.h>
  2. int main(void) {
  3. int i=0; // индекс текущей команды
  4. int j=0; // индекс массива данных
  5. int acc = 0; //аккумулятор
  6. char command_mem[100] = "^>- ?>.; "; //память команд
  7. int data_mem[10]={0}; // память данных
  8. data_mem[0]=2;
  9. data_mem[1]=3;
  10.  
  11. while (command_mem[i] != '\0') {
  12.  
  13. if (command_mem[i]==',') // считываем число в аккумулятор
  14. scanf("%d", &acc);
  15.  
  16. if (command_mem[i]=='^') // загружаем число из аккумулятора
  17. acc=data_mem[j]; // в память данных
  18. if (command_mem[i]=='~') // загружаем число из аккумулятора
  19. data_mem[j]=acc; // в память данных
  20. if (command_mem[i]=='.') // выводим число из аккумулятора на экран
  21. printf("Output: %d",acc);
  22.  
  23. if (command_mem[i]=='+') // прибавляем число из data_mem
  24. acc=acc+data_mem[j]; // к аккумулятору
  25. if (command_mem[i]=='-') // прибавляем число из data_mem
  26. acc=acc-data_mem[j];
  27.  
  28. if(command_mem[i]=='>') //переход на следующий элемент массива данных
  29. j++;
  30. if(command_mem[i]=='<') //переход на предыдущий элемент массива данных
  31. j--;
  32.  
  33. if(command_mem[i]=='?'){
  34. i++;
  35. if(command_mem[i]=='>' && acc<=0){ while(command_mem[i] != ';') i++; }
  36. if(command_mem[i]=='<' && acc>=0){ while(command_mem[i] != ';') i++; }
  37. if(command_mem[i]=='=' && acc!=0){ while(command_mem[i] != ';') i++; }
  38. } // обработка команды ?
  39.  
  40. i++; //увеличиваем индекс текущей команды
  41. }
  42. //переход на новую строку
  43. printf("\n");
  44. // выводим массив данных
  45. for (int k = 0; k<10; k++)
  46. printf("%d ", data_mem[k]);
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0.01s 5424KB
stdin
Standard input is empty
stdout
2 3 0 0 0 0 0 0 0 0