Программа по переводу из постфиксной формы записи в инфиксную с использованием скобок - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы