Академический Документы
Профессиональный Документы
Культура Документы
h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <assert.h>
#include <time.h>
#ifndef DOLPHIN
/// I love Dolphin
#endif
/*
((1+2)*3)
1+2*3
*/
char s[me];
int a[me];
int N, sign = 1, inside_number = 0;
int number = 0;
int str_length;
scanf("%s", s);
str_length = (int)strlen(s);
for(int i = 0; i < str_length; i ++){
if(s[i] == '(') a[++N] = OPEN_BRACKET;
else if(s[i] == ')'){
if(inside_number == 1){
a[++N] = number * sign;
sign = 1;
number = 0;
inside_number = 0;
}
a[++N] = CLOSE_BRACKET;
}
else if(is_operation(s[i], s, i, str_length)){
if(inside_number == 1){
a[++N] = number * sign;
sign = 1;
number = 0;
inside_number = 0;
}
if(s[i] == '+') a[++N] = PLUS;
else if(s[i] == '-') a[++N] = MINUS;
else if(s[i] == '*') a[++N] = MULTIPLY;
else if(s[i] == '/') a[++N] = DIVIDE;
}
else{
if(s[i] == '-')
sign = -1;
else number = 10 * number + s[i] - '0';
inside_number = 1;
}
}
if(s[str_length - 1] >= '0' && s[str_length - 1] <= '9')
a[++N] = number * sign;
//for(int i = 1; i <= N; i ++)
// printf("%d ---> %d\n", i, a[i]);
return 0;
}
/*
own cases:
2+3*(-1*10+4)
(4-2*(5-3)*4)
(4+(3*5))+(6*7)+8
(-2+4*(3+6-5))
-2+5+4-(0*4+5)
4*5+(6*4-75)*3
4-0*10+5*(7-2)
*/