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

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
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define  MAX 300

struct stack {
	char alpha;
	struct stack *nxtPTR;

};

typedef struct stack  Stack;
typedef  Stack *node;
void  message(void);
char out_print(char word[]);
int precedence_power(int res_1, int  res_2);
int pop(node *topPtr);
void push_stack(node *topPTR, char value);
int pop(node  *topPTR);
char check_stack(node data);
int isOperator(char c);
int precedence(char data_1, char   data_2, int(intro_precedence_power)(int res_1, int  res_2));
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));
void  please_enter(void );

int main(void) {
	
	char infix[MAX];
	char postfix[MAX];
	node topPTR = NULL;
	
	fgets(infix, sizeof(infix), stdin);
    int	m = strlen(infix);

	infix[m] = ')';

	memset(postfix, 0, MAX);
	

  

	converting( infix, postfix, &topPTR, check_stack, push_stack, pop, isOperator, precedence, precedence_power);
	out_print(postfix);
	
	puts(" ");
	
return 0;
}

char out_print(char word[]) {

if( word[0]  != '\0' ){
	 	printf( "%c " ,  word[0]    ) ; 
return    out_print(word + 1  )  ;
}

}

void push_stack(node *topPTR, char value) {
	node newPTR = malloc(sizeof(Stack));

	if (newPTR != NULL) {

		newPTR->alpha = value;
		newPTR->nxtPTR = *topPTR;

		*topPTR = newPTR;
	}

	else {

		puts("error");

	}
}

int pop(node *fix) {

int value = (*fix)->alpha;

	node temp = *fix;
	*fix = (*fix)->nxtPTR;
	free(temp);

	return value;
}

char check_stack(node data) {
	return data->alpha;
}

int isOperator(char c) {
	return c == '/' || c == '*' || c == '-' || c == '+'  || c == '^'  ;
}

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

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

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

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

Где здесь C++, guest?!

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


    8