Zap 13.2.2009

strky
Matfyz(ák|ačka) level I
Příspěvky: 13
Registrován: 24. 1. 2006 15:15
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Zap 13.2.2009

Příspěvek od strky »

Zadanie:"

Ukolem je napsat program, ktery by provadel vyhodnoceni infixnich vyrazu s operatory +,-,*,/.
Vyraz muze obsahovat i zavorky.

Ale pozor! Aby to nebylo tak jednoduche:

- kazdy z operatoru bude mit urcenou prioritu
- bude dan seznam dovolenych operandu
- dale bude pro kazdy operator OP dana tabulka vyhodnoceni operandu (tj.
prechody op1 OP op2 -> vysledek

Technicke detaily

-----------------

Program bude volan se dvema parametry:
eval defop.txt vyraz.txt

INPUT:

defop.txt - obsahuje definice operatoru

- prvni ctyri radky urcuji priority operatoru

- na dalsim radku je seznam povolenych operandu


- na dalsich radcich se nalezaji tabulky operatoru - tj. matice |pocet
operandu| x |pocet operandu|

Pr.

* 100
/ 100
+ 10
- 10

0 1

+
0 1
1 1

*
0 0
0 1


/
1 0
1 1

-
1 0
0 1

vyraz.txt
(1+0)*1

OUTPUT:
Program vypise hodnotu zadaneho vyrazu nebo "SYNTAX ERROR" pokud je vyraz spatne zadany (spatne zavorkovani, nepovoleny operand, operator,...)


Pr. pro vyse uvedeny priklad je hodnota vyrazu 1


Hint.: vystaveni stromu vyrazu"


Mohli sme predpokladat korektny defop.txt. Vyhodnocovany vyraz nemusel byt korektny.
vysvetlenia: ta tabulka operatorov znamena, ze ked mudem vyhodnocovat napr. vyraz 1+1, tak sa tam pozriem, ake cislo sa nachadza v j-tom stlpci a i-tom riadku. A to cislo bude vysledok. Cisla v tomto konkretnom vstupnom subore su stringy, su to premenne.

Prikladam moje riesenie, ktore je korektne az na to, ze funguje len pre
ciselne premmenne. Je to sice otazka par riadkov zdrojaku to dorobit( vo funkcii najdi_znam, ale po 3hod. kodenia sa mi uz nechce :-). Tiez to pada pri niektorych nekorektnych vstupoch.
Zadavajuci moje riesenie skomentoval tak, ze skoda ze som to nerobil objektovo, ze som si mohol usetrit dost prace. Ale inak bol spokojny.
Přílohy
vyraz.zdroj.cpp
(7.28 KiB) Staženo 161 x
Odpovědět

Zpět na „2006“