Добрый день, помогите исправить функцию:
вот эта функция получает выражение в инфексной форме, а если ввести выражение в постфиксе то она кладет в дерево неправильно, например если я ввожу 3 4 + 5 6 - * то она записывает это выражение как 3 - 4 * 5 + 6 а должно быть 3 + 4 * 5 -6 то есть почему то знаки + и - поменялись :( как переделать что бы она получала выражение в посфиксе и правильно клала в дерево?
| Код | int main() { struct tree *dr=NULL; struct pol *h=NULL; char *str; int i, number; if(!(str=(char*)malloc(50))) {puts("Ошибка в выделении памяти!"); return 0;} puts("Введите выражение\n"); fflush(stdin); gets(str); i=strlen(str); i--; while(i>=0) {if(*(str+i)=='/' || *(str+i)=='*' || *(str+i)=='-' || *(str+i)=='+') {dr=add(dr, *(str+i), 0); i--; } if(*(str+i)==' ') i--; if(*(str+i)>='0' && *(str+i)<='9') {number=0; int mn=1; while(*(str+i)>='0' && *(str+i)<='9') {number+=(*(str+i)-'0')*mn; mn*=10; i--; } dr=add(dr,' ', number); } }
|
|