fork(1) download
  1. #include <stdio.h>
  2. int main(void) {
  3. int i=0;
  4. int j=0;
  5. int acc = 0;
  6. int pzf = 1;
  7. int zf =1;
  8. int pz_prev=0;
  9. int z_prev=0;
  10. int prev=0;
  11. char str_arr[100] ="!>>>^<+>~<<<^>-<~(?)>>>^.";
  12.  
  13. int data_arr[10]={0};
  14. data_arr[0]=5;
  15. data_arr[1]=1;
  16. data_arr[2]=5;
  17.  
  18. while ( str_arr[i] != '\0') {
  19. if(str_arr[i]==',')
  20. scanf("%d", &acc);
  21. if(str_arr[i]=='+')
  22. acc=acc+data_arr[j];
  23. if(str_arr[i]=='-')
  24. acc=acc-data_arr[j];
  25. if(str_arr[i]=='>')
  26. j++;
  27. if(str_arr[i]=='<')
  28. j--;
  29. if(str_arr[i]=='~')
  30. data_arr[j]=acc;
  31. if(str_arr[i]=='^')
  32. acc=data_arr[j];
  33. if(str_arr[i]=='.') {
  34. printf("Output: %d",acc);
  35. printf(" ");
  36. };
  37. if (str_arr[i]=='}')
  38. pz_prev=1;
  39. if (str_arr[i]==')')
  40. z_prev=1;
  41. if (str_arr[i]=='!')
  42. prev=1;
  43. // безусловный переход
  44. if (str_arr[i]=='?' && prev==0) {
  45. while(str_arr[i] != '!')
  46. i++;
  47. }
  48. if (str_arr[i]=='?' && prev==1) {
  49. while(str_arr[i] != '!')
  50. i--;
  51. }
  52. // переход по условию acc=0
  53. if (str_arr[i]=='(' && zf==1 && z_prev==0) {
  54. while(str_arr[i] != ')')
  55. i++;
  56. }
  57. if (str_arr[i]=='(' && zf==1 && z_prev==1) {
  58. while(str_arr[i] != ')')
  59. i--;
  60. }
  61. // переход по условию acc>=0
  62. if (str_arr[i]=='{' && pzf==1 && pz_prev==0) {
  63. while(str_arr[i] != '}')
  64. i++;
  65. }
  66. if (str_arr[i]=='{' && pzf==1 && pz_prev==1) {
  67. while(str_arr[i] != '}')
  68. i--;
  69. }
  70. // флаги
  71. if(acc>=0){
  72. pzf=1;}
  73. else {
  74. pzf=0;}
  75. if(acc==0){
  76. zf=1;}
  77. else {
  78. zf=0;}
  79.  
  80. //printf("i=%d",i);printf(" ");
  81. i++;
  82. }
  83. printf("\n");
  84. for (int k = 0; k<10; k++)
  85. printf("%d ", data_arr[k]);
  86. return 0;
  87. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Output: 25 
0 1 5 25 0 0 0 0 0 0