Kezdőoldal » Számítástechnika » Programozás » Ezt Pascalba hogyan csinálhato...

Ezt Pascalba hogyan csinálhatom meg?

Figyelt kérdés

Egy egyszerü számológépt akarok csinálni(pont olyant, amilyen a telefonodba van). Eddig megcsinaltam minden gombot, és a gombokra kattintva egy edit lapon beg is jelenik, amit beütöttél. Mikor végeztél a beütéssel lesz egy stringed, pl: '5*3-1'. Ezt hogy változtatod '14'-re?

Tudom, hogyan lehet floatbol stringbe, stringbol integerbe alakitani, de egy ilyen stringet nem lehet az operatorok miatt. Válaszaitokat előre is köszönöm



2018. szept. 6. 15:11
1 2
 1/14 anonim ***** válasza:
58%

Tokenizálod, fordított lengyel formára hozod, kiértekeled egy verem kiértékelővel, aztán már csak meg kell jeleníteni az eredményt.

Egy pár évvel még visszább jársz ennél tudásban.

2018. szept. 6. 15:16
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
22%

Két lehetőséget látok:


1. keresel egy olyan alkalmazást, aminek át tudod adni a string-et az pedig visszaadja a választ

2. meg kell írnod azt a rutint ami a matematika szabályainak megfelelően felbontja a string-ed majd elvégzi a diszkrét műveleteket és kiszámolja a végeredményt


Az első nyilván kevésbé elegáns, plusz szükséged lesz egy másik programra is. A második... megfelelően komplex ahhoz, hogy egy csomó dolgot megtanulja a matematikáról és a programozásról. Külön érdekes, hogy ha a string-ed tartalmaz zárójeleket is, mert akkor akár a rekurzióba is bele lehet menni.

2018. szept. 6. 15:17
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
0%

Miért gyűjtenéd egy változóba az eredményt?

Legyen egy string típusú változó, ami a számológép kijelzőjén lévő értéket tárolja és legyen egy változó, amiben pedig az adott matematikai művelet eredményeit tárolja. Esetleg lehet tömb, hogy az előzményeket is tárolni tudd.

2018. szept. 6. 15:46
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
0%
#3: legjobb ugye egy dinamikus tömb akár, amit pl. tipusos pointerekkel lehet ugye megoldani.
2018. szept. 6. 15:50
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Köszönöm az utolsó választ, pont egy ilyennek kezdtem neki, de rosz lesz igy a sorrend(egyszer szorzás-osztás ugyebár, utánna osszeadás-kivonás)
2018. szept. 6. 15:51
 6/14 A kérdező kommentje:
3#-ra gondoltam
2018. szept. 6. 15:52
 7/14 A kérdező kommentje:
Es azert kell hogy strinbol csinaljak muveletet, mert a szamologepbe van torles jel is.
2018. szept. 6. 16:02
 8/14 anonim ***** válasza:
34%
Alakítsd infix-ből postfixbe és úgy már könnyebb a kiértékelés.
2018. szept. 6. 16:20
Hasznos számodra ez a válasz?
 9/14 anonim ***** válasza:
34%

Ne szenvedjél már, bazzeg.

Az első válaszoló megírta hogy kell, illetve, hogy kéne csinálnod.


Te még kicsi vagy ehhez. Ezt is megírta.

A stringen végig kell lépkedni karakterenként, kiértékelni és be a verembe:


if char isNumeric then

if char isOperator then

if char isPass then


esetleg így


Case operator of

'+': ..

'-': ..

'*': ..

'/': ..

else ErrorVanBazzmegErroooor;

2018. szept. 6. 16:32
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:
55%

Lehet lepontozni, de csak azért van, mert nem értetek hozzá.

Már a kifejezés tokenizálása sem triviális, sőt, kifejezetten nehéz. Állapotgépeket, formális nyelveket kell ismerni hozzá.

Biztos menni fog kis próbálkozás után olyannak, aki ennyire kezdő még.

2018. szept. 6. 16:35
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!