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