fork 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] = ",~>~!a>~>~>~>~A>~"; //память команд
  7. char label_name;
  8. int data_mem[10]={0}; // память данных
  9.  
  10. while (command_mem[i] != '\0') {
  11. if (command_mem[i]==',') // считываем число в аккумулятор
  12. scanf("%d", &acc);
  13. if (command_mem[i]=='+') // прибавляем число из data_mem
  14. acc=acc+data_mem[j]; // к аккумулятору
  15. if (command_mem[i]=='~') // загружаем число из аккумулятора
  16. data_mem[j]=acc; // в память данных
  17. if (command_mem[i]=='.') // выводим число из аккумулятора на экран
  18. printf("Output: %d",acc);
  19. if(command_mem[i]=='>') //переход на следующий элемент данных
  20. j++;
  21. if(command_mem[i]=='<') //переход на предыдущий элемент данных
  22. j--;
  23. // прыжок на метку !
  24. if(command_mem[i]=='!') {
  25. i++;
  26. label_name=command_mem[i];
  27. while(command_mem[i]!=(char)( (int)(label_name)-32 ) && i!=0) i--;
  28. if(i==0){
  29. while(command_mem[i]!=(char)( (int)(label_name)-32 ) ) i++;
  30. }
  31. }
  32. i++; //увеличиваем индекс текущей команды
  33. }
  34. //переход на новую строку
  35. printf("\n");
  36. // выводим массив данных
  37. for (int k = 0; k<10; k++)
  38. printf("%d ", data_mem[k]);
  39. return 0;
  40. }
Success #stdin #stdout 0s 5500KB
stdin
5
stdout
5 5 5 0 0 0 0 0 0 0