Няшная / Говнокод #25555 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
void  converting(char *in, char *out, node *PTR, char (checking_stack)(node), void (push)(node *topPTR, char value), int (pop)(node *fix), int (isOper)(char c), int (precedence_intro)(char data_1, char  data_2, int(intro_precedence_power)(int res_1, int  res_2)), int(intro_precedence_power)(int res_1, int  res_2)) {

	int k = 0, j = 0, d = 0;
	
	push(PTR, '(');
	
	for (k = 0; checking_stack((node)PTR) != 0; k++) {
	
		if (isdigit(in[k])) {
			
			out[j++] = in[k];

		}

		if (in[k] == '(') {

			push(PTR, in[k]);

		}

		if (isOper(in[k]) == 1) {

			while (precedence_intro((*PTR)->alpha, in[k], intro_precedence_power) != -1) {

				out[j++] = pop(PTR);
			}

			push(PTR, in[k]);
		}
		
		if (in[k] == ')') {

			d = pop(PTR);
			for (; d != '('; d = pop(PTR)) {
				out[j++] = d;
			}
		}
	}
}





int precedence(char data_1, char   data_2, int(intro_precedence_power)(int res_1, int  res_2))  {
 char collection[] = "+1-1*2/2^3";	
 
 char	buf_1 = (char)strcspn(  collection , &data_1) + 1;
 char	buf_2 = (char)strcspn(collection, &data_2) + 1;

	return   intro_precedence_power(atoi(&collection[buf_1]), atoi(&collection[buf_2]));
}

int precedence_power(int res_1, int  res_2) {
	if (res_1 < res_2) {
		return   -1;
	}
	else	if (res_1 == res_2) {
		return 	  0;
	}
	else	if (res_1 > res_2) {
		return	  1;
	}
	return 0;
}

Якобы вычисляет обратною польскою нотацию номер два

Запостил: lazy_8 lazy_8, (Updated )

Комментарии (7) RSS

    • Не стабильно зато весело ))) "msvc" и "Ubuntu" c "Gcc 8.2" вроде меня поняли , зато Arch выдает именно такую фигню
      1 3 7 + * 3 /, все становится более менее если эту приблуду buf_1 = (char)strcspn( collection , &data_1) + 1; заменить на 2 скучных Свитча, извините не читали мы "Драконов" )))
      Ответить
      • Ну так «data_1» и «data_2» — не нуль-терминированные строки, их адреса нельзя в «strcspn» передавать.
        Ответить
      • Вряд ли, скорее всего руками, с бизоном были бы всякие yyloc, yylval, yyparse и пр. yy'тушня.
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8