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
 1/13 anonim ***** válasza:
2013. okt. 29. 21:07
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
#1: Nem erre voltam kiváncsi. Hidd el én is is tudom a keresőt használni.
2013. okt. 29. 21:13
 3/13 anonim ***** válasza:

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)

2013. okt. 29. 21:27
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:

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.

2013. okt. 29. 21:43
 5/13 A kérdező kommentje:
Hagyjuk a fenébe az egészet. Egy szép levezetést kértem volna, nem az eredményt - nem nekem kell azt hiszem 30 éves programozói múlttal meg tudom oldani - csak egy hivatkozási alap lett volna a programozói rovat egy kérdéséhez. De hát a magyar mentalitás.....
2013. okt. 29. 21:48
 6/13 anonim ***** válasza:
Te lexikai elemzőkre meg a parzerekre gondolsz?
2013. okt. 29. 21:52
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
Igen, de szájbarágósan h.lyegyereknek elmagyarázva :) Hová kell zárójel, műveletek sorrendje stb.... Azért kértem egy szép levezetést a példa alapján elmagyarázva, de már mindegy mivel a másik topic elment nemkivánatos irányba :) 50 hozzászólásból talán 2 érdemi - sajnos -
2013. okt. 29. 22:22
 8/13 2xSü ***** válasza:

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.

2013. okt. 29. 23:30
Hasznos számodra ez a válasz?
 9/13 2xSü ***** válasza:

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.

2013. okt. 29. 23:34
Hasznos számodra ez a válasz?
 10/13 2xSü ***** válasza:

É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?

2013. okt. 29. 23:41
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!