Matematikai kifejezések értelmezése help!!
2003-09-29T12:00:40+02:00
2009-10-08T18:19:24+02:00
2022-07-25T10:11:16+02:00
  • Megnyitod a fájlt, beolvasod egy memóriaterületre. Lehet ez String, vagy byte/char tömb (inkább ez utóbbi). Innen már csak karakterenként végigmész a szövegen és látod, hogy mi, mi. Legrosszabb esetben a karakter kódokat vizsgálod, bár C#-han biztos van elegánsabb módszer. Ha meg jönnek sorban a karakterek akkor egy egyszerű IF-el eldöntheted, hogy mi az. A számoknál van nagyobb gond, de biztos van erre beépített függvény, vagy józan paraszt ésszel írsz egyet, ami ha talál egy számjegyet akkor "kiveszi" a számot a szövegből.

    A lényeg, hogy a kapott szövegből kell az elejétől indulva végigmenni és vizsgálni a karaktereket. (Az meg egyszerű kellene hogy legyen.)
    Mutasd a teljes hozzászólást!
  • Köszi, engem elsősorban az érdekelne hogy fájlból hogyan lehet a kiolvasott valamiről eldönteni hogy az szám-e vagy műveleti jel. Magát az értelmezőt már rég megírtam, csak idáig nme a fájlból olvasta az adatokat. Bocs ha az előbb rosszul fogalmaztam.
    Mutasd a teljes hozzászólást!
  • Felesleges írni. ott van 2ő is a framworkben.
    asszem Expressions.cs az SDK-ba (3.0), reptében megoldja neked.
    Mutasd a teljes hozzászólást!
  • kb egy hónapja írtam egy mat. kif. értelmezőt C# nyelven. Gondolkodj és rájösz. Egyébként műveleti fát pl építhetsz hozzá. Műveletek precedenciája alapján mindig két részformulára bontod a kifejezést és szúrod be az operátorokat a fába. A levélelemek pedig már csak számok lesznek így lentről fölfelé haladva elvégezheted a műveleteket és a gyökér(operátor) végrehajtásával eredményed is lesz. Vagy éppen ezt a fát átadod egy másik programegységnek ami mondjuk egy matematikai függvényt vár.
    Mutasd a teljes hozzászólást!
  • Hali!

    Segítséget szeretnék kérni a következő dologban:
    Adott egy fájl, benne egy matematikai kifjezés
    Mondjuk

    ( 3.2 + 4.8 ) * ( 9.5 + 6.0 ) / 2


    Egy C/C++ -ban írt értelmező ezt a fájlt megnyitja, majd ebből kéne eldöntenie, hogy az épp beolvasott "valami" szám-e, szimbólum-e ( '(' ')' '+' '*' , stb..) vagy 'whitespace' és eszerint kéne tudnia lekezelni majd elraktározni a kapott kifejezéseket.
    Az 'fscanf' függvény erre a célra használhatatlan, mivel nem tudja hogy a következő "valami" szám-e avagy szimbólum..
    Hogy lehet beolvasni ezeket a kifejezéseket?
    Azt sem bánom ha minden "valami" közé egy space-t kell tennem, ha van erre megoldás.

    Üdv
    Mutasd a teljes hozzászólást!
  • Az OOP-s megoldást nem ismerem, én fordított lengyel módszerrel csináltam amikor szükségem volt rá. Egy matematikai kifejezés t aránylag könnyű RPN formába helyezni, onnantól kezdve pedig gyerekjáték kiértékelni, ráaadásul az RPN formában tárolt változat megőrizhető, így legközelebb még gyorsabb lehet az értelmezés.
    Mutasd a teljes hozzászólást!
  • Én most írtam egy BASIC fordítót/értelmezőt PIC mikrokontrollerre, C++ Builderben van +írva a fordító,mindenféle C operátort ismer. Nem nagy durranás, rekurzív függvényhívogatással, postorder bejárással könnyen megoldható.
    Mutasd a teljes hozzászólást!
  • Ha megertetted az OOP megoldas lenyeget, akkor probald meg sztem a kodot megirni sajat magad.
    Tenyleg sok hasznod lesz belole, es ha jol gondolkodsz, akkor meg tokeletesiteni es gyorsitani is tudod a kodot.

    Mutasd a teljes hozzászólást!
  • ami nem nagyon m1 azt gyakorolnik ell
    Mutasd a teljes hozzászólást!
  • Most pont egy ilyen programon dolgozom.
    De én előb lefordítom majd a kifejezéseket egy saját kódra, műveleti sorrendben.

    Szerrintem próbálj te is saját magadtól rájönni hogy hogyan! Sok tapasztalatot adhat egy ilyen feladat megoldása.
    Mutasd a teljes hozzászólást!
  • Hello!

    Tudna valaki segíteni? A prog.hu Matematikai kifejezések értelmezése - OOP-s megoldás cikkben leírt forráskódhoz kellene valami egyszerű példa, hogy hogyan tudnám használni a progsit...

    Köszi előre is!
    Mutasd a teljes hozzászólást!
abcd