Pagini recente »
Diferențe pentru problema/postinfix între reviziile 9 și 10
|
Diferențe pentru problema/postinfix între reviziile 8 și 9
|
Diferențe pentru problema/postinfix între reviziile 7 și 8
|
Diferențe pentru problema/postinfix între reviziile 5 și 6
|
Diferențe pentru problema/postinfix între reviziile 2 și 3
Nu există diferențe între titluri.
Diferențe între conținut:
== include(page="template/taskheader" task_id="postinfix") ==
Poveste și cerință...
Se dă un șir de caractere ce reprezintă scrierea postfix ("Forma Inversă Poloneză":https://en.wikipedia.org/wiki/Reverse_Polish_notation) a unei expresii aritmetice. Să se afișeze scrierea infix a acesteia.
h2. 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*$
h2. 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/+*$
h2. 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+*$
h2. Date de intrare
Fișierul de intrare $postinfix.in$ ...
Fișierul de intrare $postinfix.in$ conține pe o singură linie șirul de caractere ce reprezintă notația postfix a unei expresii.
h2. Date de ieșire
În fișierul de ieșire $postinfix.out$ ...
În fișierul de ieșire $postinfix.out$ se va găsi un șir de caractere reprezentând notația infix a expresiei.
h2. 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 + - * /$
h2. Exemplu
table(example).
|_. postinfix.in |_. postinfix.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| AA*
| A*A
|
| AB*CD/+
| A*B+C/D
|
h3. Explicație
...
| ABC+*D/
| A*(B+C)/D
|
| AB+C+
| A+B+C
|
| ABC++
| A+(B+C)
|
| ABC*+
| A+B*C
|
| AB+
| A+(B)
|
== include(page="template/taskfooter" task_id="postinfix") ==
Nu există diferențe între securitate.