Kezdőoldal » Tudományok » Alkalmazott tudományok » Mennyi 12+23-4/6*8+12/7777+55-...

SimkoL kérdése:

Mennyi 12+23-4/6*8+12/7777+55-777*9999 értéke?

Figyelt kérdés

Tisztelt matematikusok. A programozás rovatban merült fel az alábbi kérdés, miszerint egy beviteli mezőben lévő string, jelen esetben 12+23-4/6*8+12/7777+55-777*9999 értékét a műveleti jelek alapján számoljuk ki. Ha valaki megtenné, hogy ezt szépen levezetné sokat dobna a meddő vitákon - leprogramozni nem nagy dolog, de már kb. 40 hozzászólás érkezett a semmiről -.

Előre is köszönöm.



2013. okt. 29. 21:06
1 2
 11/13 anonim ***** válasza:
46%
Egy 30 éves programozói múlttal rendelkező emberkének miért kell szájbarágósan elmagyarázni a műveleti sorrendet és a zárójelek használatát?...
2013. okt. 30. 00:19
Hasznos számodra ez a válasz?
 12/13 anonim ***** válasza:

Ezt nekem nem könnyű egyszerűen elmagyarázni, mert régen tanultam és máshogy, nem teljesen hatékony módszerrel esnék neki, mint azt lent látod is.


LL1 parser -t pont erre szokták használni!

Ez nagyon gyors, pontos, egymás után elemez szintaktikát és szemantikát. Jelzi a hiba helyét!

[link]

L - balról jobbra halad

L - Left most derivation-t használ

1 - egy karaktert olvas be


Itt van egy komolyabb irodalom hozzá

[link]

Lehet találni előadásokat is a témában:

[link]

[link]


Nem tudom ebből mit tudsz kihámozni, de ha komolyan érdekel a dolog, ebbe az irányba menj el!


== == == == == ==


Én úgy állnék hozzá, hogy definiálnám a precedenciákat.

Első körben azokra illesztenék (reguláris kifejezésekkel: [link] )

Kiszámolnám az értékét.

Visszahelyettesíteném.

tovább folytatnám a számolást.

Ebben nincs bemeneti hibakezelés (syntax)! Azt külön kell megcsinálni! Ez csak szemantika.


I) zárójelek

1) zárójelek egyeztetése.

2) legbelső zárójel kiértékelése

3) legbelső zárójelbe az eredmény behelyettesítés

4) (ha már nincs belső zárójel) legelső zárójel kiértékelése

5) legelső zárójelbe az eredmény behelyettesítés


II) osztás

1) műveletet és mellette a két értéket elkapni.

2) műveletet elvégezni és visszahelyettesíteni.


III) szorzás

1) műveletet és mellette a két értéket elkapni.

2) műveletet elvégezni és visszahelyettesíteni.


IV) kivonás

1) műveletet és mellette a két értéket elkapni.

2) műveletet elvégezni és visszahelyettesíteni.


V) összeadás

1) műveletet és mellette a két értéket elkapni.

2) műveletet elvégezni és visszahelyettesíteni.


Ha más is marad, mint egy szám, akkor hiba van a bemenetben!

Ha bárhol elakadt a részlet számolás hiba van a bemenetben, vagy a változó kezelésedben (nem elég jó változó típussal számolsz).



Syntax elemző kb az lehetne, hogy illesztesz a következőkre:

1) a zárójeleknek párosával () kell lenniük!

2) zárójel felbontás (zárójel előtt és )zárójel után csak műveleti jel lehet.

3) két szám között pontosan egy műveleti jelnek kell lennie

2013. okt. 30. 07:09
Hasznos számodra ez a válasz?
 13/13 anonim ***** válasza:

Tudod mit! B+ meg a 30 éves programozói múltadat!

30 év programozás után ilyen hülye kérdéssel jössz ide, aztán fikázod azt, aki segíteni akar.

Közben nem vagy képes egy értelmes kérdést sem feltenni!


3. féléves anyag programozóknak az ilyen szintű példa. Nem 60.


Egy átkozott troll lakik benned!

Amíg ezt nem űzöd ki magadból, sajnálom minden egyes segítőkész betűmet, amit ide pazaroltam.


Minden kedves, és segítőkész válaszra volt valami rossz szavad.

Neked pszichológus kell, nem gyakorik kérdések!

2013. okt. 30. 19:37
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!