Fişierul intrare/ieşire:inpostfix.in, inpostfix.outSursăConcurs IQ Academy | Clasa a 10-a | Șiruri de caractere
AutorDin FolclorAdăugată deteodor94Teodor Plop teodor94
Timp execuţie pe test0.05 secLimită de memorie4096 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise

Inpostfix

Se dă un şir de caractere ce reprezintă o expresie aritmetică. Să se afişeze scrierea postfix a acesteia (Forma Inversă Poloneză).

Descriere

Forma infix a unei expresii este forma cu care suntem cu toţii obişnuiţi:

  • operand1 OPERATOR operand2
  • A + B
  • A * B

Forma postfix se obţine prin scrierea operatorului în urma operanzilor:

  • operand1 operand2 OPERATOR
  • AB+
  • AB*

Exemplu pas cu pas

Avem forma infix:

  • A * (B + C / D)

Construim forma postfix pas cu pas. Pentru simplitate, vom ignora spaţiile: A*(B+C/D).

  • Pasul 1. Avem doi termeni: A * (B+C/D). Operaţia de înmulţire se mută la final.
    • A(B+C/D)*
  • Pasul 2: În interiorul parantezei, avem doi termeni: B + C/D. Operaţia de adunare se mută la final.
    • A(BC/D+)*
  • Pasul 3: C/D devine CD/
    • ABCD/+*

Alte exemple

  • A + B = AB+
  • A + B - C = AB+C-
  • A - B * C = ABC*-
  • (A - B) / C = AB-C/
  • (A + B) * (C + D) = AB+CD+*

Date de intrare

Fişierul de intrare inpostfix.in conţine pe o singură linie şirul de caractere ce reprezintă notaţia infix a unei expresii.

Date de ieşire

În fişierul de ieşire inpostfix.out se va găsi un şir de caractere reprezentând notaţia postfix a expresiei.

Restricţii

  • 1 ≤ lungimea sirului ≤ 100.000
  • Operanzii expresiei sunt formaţi dintr-o singură literă mare din alfabetul englez [A...Z]
  • Operatorii aritmetici din expresie sunt + - * /
  • Expresia conţine doar paranteze rotunde ( )

Exemplu

inpostfix.ininpostfix.out
A*A
AA*
A*B+C/D
AB*CD/+
A*(B+C)/D
ABC+*D/
A+B+C
AB+C+
A+(B+C)
ABC++
A+B*C
ABC*+
Trebuie sa te autentifici pentru a trimite solutii. Click aici