Mennyi 12+23-4/6*8+12/7777+55-777*9999 értéke?
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.
akkor mire voltál kiváncsi? ha beirod gugliba akkor kiszámolja neked
ja stringként viszont pontosan 12+23-4/6*8+12/7777+55-777*9999 lesz az értéke mert SZÖVEGGEL NEM SZÁMOLUNK (ez nem változó hanem egy konstans)
Imádlak benneteket :)
'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.' Hogyan kérdezzem érthetőbben ? Kukacoskodni én is tudok. Jelen esetben amit leírtam az egy string ! amit ki kell értékelni, fel kell bontani, számmá kell konvertálni és a műveleti jelek alapján a matematikai műveleteket el kell végezni. Azt hittem itt értelmes válaszadók vannak.
Ugye a műveleteknek van prioritása. A szorzást, osztás magasabb rendű művelet, mint az összeadás kivonás.
Elsőként szét kellene bontani a stringet számokra és műveleti jelekre.
A következő lépés attól is függ, hogy milyen műveleti jelek lehetnek a beírt kifejezésben. Ha csak a négy alapművelet, akkor relatíve könnyebb dolgunk van.
Pl. Elkezdünk menni balról jobbra. Mondjuk két változót tartunk fen, az aktuális művelet bal és jobboldali változóját, legyen ez a és b. Valamint a műveletnek is adunk egy kódot, legyen ez m. Elsőként bedobjuk a-ba 12-t. Eltároljuk, hogy összadás következik. Bedobjuk b-be 23-at. Mivel kivonás jön, elvégezhető a művelet, így a:=a+b. Eltároljuk, hogy kivonás jön, vesszük a 4-et. De mivel most nem alacsony rendű művelet jön, ezért megállunk a folyamattal, pl. nyitunk egy c változót, és egy második művelet tároló változót. c-be bddobjuk a 6-ot. m2-be az osztást. Megnézzük mi jön. Szorzás fog jönni, így elvégezzük a műveletet b:=b/c. A 8/at bedobjuk c-be, m2-be a szorzást. Megnézzük mi jön, összadás jön. Ezért elvégezzük ugyanúgy a műveletet b:=b*c, de visszalépünk az alacsonyabb rendű művelethez. Emlékeztetőül a-ba most (12+23)=35 van, m-ben egy kivonás, b-ben meg (4/6*8)=5,333. Tehát elvégezzük az a:=a-b-t.
Stb… Remélem érthető így.
Még egyszer. A műveletek sorrendjét a művelet precedenciája határozza meg. Azonos precedencia esetén a műveleteket balról jobbra kell elvégezni.
12+23-4/6*8+12/7777+55-777*9999 = 12+23-(4/6*8)+(12/7777)+55-(777*9999)
Ebben az esetben a 4/6*8 = (4/6)*8
A részeredményeket felírva: 12+23-4/6*8+12/7777+55-777*9999 = 12+23-5,333333+0,001543+55-7769223. Ez már azonos precedenciájú műveletek sora, így balról jobbra számoljuk ki:
((((12+23)-5,333333)+0,001543)+55)-7769223.
És egyébiránt valóban homályos a kérdésed. A kérdés az volt, hogy „mennyi ... értéke”. Erre az első válaszoló jó választ adott. Amit után írsz, abból én is csak remélem, hogy a kérdés az volt, amire én gondolok, és valahogy így kellett volna – szerintem – megfogalmazni:
Adott egy műveletsor: 12+23-4/6*8+12/7777+55-777*9999
Milyen sorrendben kell elvégezni az egyes műveleteket? Le tudnátok írni lépésről lépésre, hogy adott lépésben melyik műveleteket kell elvégezni és miért pont azt?
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!