Программа по переводу из постфиксной формы записи в инфиксную с использованием скобок - C (СИ)
Формулировка задачи:
c проверкой на правильность ввода, записанная в буквенном виде
Решение задачи: «Программа по переводу из постфиксной формы записи в инфиксную с использованием скобок»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <malloc.h> int ptrS; char *Stack[100]; void push(char *S) { char *v; int l; l=strlen(S)+1; v=(char *) calloc(1,l); strcpy(v,S); Stack[ptrS++]=v; } char *pop() { return Stack[--ptrS]; } char *post2inf(char *Stri) { int i,j,l,p,k; char curr[10],c; char *a1, *a2; char res[200]; l=strlen(Stri); for (j=0; j<10; j++) curr[j]=0; p=0; for (i=0; i<l; i++) { c=Stri[i]; if ((c == '+') || (c == '-') || (c == '*') || (c == '/') || (c == ' ')) { if (p > 0) { push(curr); for (j=0; j<10; j++) curr[j]=0; p=0; } if (c != ' ') { a2=pop(); a1=pop(); for(j=0; j<200; j++) res[j]=0; strcpy(res,"("); strcat(res,a1); k=strlen(res); res[k]=c; strcat(res,a2); strcat(res,")"); free(a1); free(a2); push(res); } } else curr[p++]=c; } return Stack[0]; } int main(int argc, char* argv[]) { int i; char *F="xx aa bb cc + * -"; /* формула в ОПЗ */ char *R; ptrS=0; for (i=0; i<100; i++) Stack[i]=NULL; R=post2inf(F); printf("%s \n",R); free(R); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д