#include #include #include #include #include #include #include "input.h" #include "stack.h" bool is_integer(char* string) { size_t string_length = strlen(string); for (size_t index = 0; index < string_length; index++) { if (!isdigit(string[index])) { return false; } } return true; } int main() { char* string = input(); struct Stack* stack = stack_initialization(); char* token = strtok(string, " "); while (token != NULL) { if (is_integer(token)) { intptr_t number; sscanf(token, "%ld", &number); stack_push(stack, (void*)number); } else { intptr_t number1 = (intptr_t)stack_pop(stack); intptr_t number2 = (intptr_t)stack_pop(stack); intptr_t result = 0; if (strcmp(token, "+") == 0) { result = number2 + number1; } else if (strcmp(token, "-") == 0) { result = number2 - number1; } else if (strcmp(token, "*") == 0) { result = number2 * number1; } else { result = number2 / number1; } stack_push(stack, (void*)result); } token = strtok(NULL, " "); } printf("%ld\n", (intptr_t)stack_pop(stack)); return EXIT_SUCCESS; }