Hollosi Information eXchange /HIX/
HIX CODER 239
Copyright (C) HIX
1998-10-03
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 levelezesi listak (mind)  11 sor     (cikkei)
2 Re: Matematikai kifejezes feldolgozo es egyszerusito (mind)  131 sor     (cikkei)
3 Borland C++ 4.5 HWND (mind)  14 sor     (cikkei)
4 Re: *** HIX CODER *** #238 -- Forraskod wanted (mind)  16 sor     (cikkei)
5 Widget vagy Gadget (mind)  14 sor     (cikkei)

+ - levelezesi listak (mind) VÁLASZ  Feladó: (cikkei)

Hello Mindenkinek!
Szeretnek figyelmetekbe ajanlani egy programozasi levelezesi listat!
 feliratkozni a  -ra
kuldott subscribe buherator tartalmu levellel lehet.
Ezen a listan csak kodolassal kapcsolatos dolgokkal lehet foglalkozni.
Akinek masjellegu (de informatikaval kapcsolatos) kerdesei, eszrevetelei
vannak az iratkozzon fel a  -ra. A
feliratkozas hasonlo a fenti listaehoz :)  -ra
kell kuldeni egy subscribe buherator-flame tartalmu levelet.

Udvozlettel: Lu Matt [  ]
+ - Re: Matematikai kifejezes feldolgozo es egyszerusito (mind) VÁLASZ  Feladó: (cikkei)

On 28 Sep 98 at 16:01, ifj Lajko Janos wrote:

> Keresem  a  fent  emlitett  forraskodot.  Lehet,  hogy  neked  van
> egy hasznalhato verziod. (Johet: C, Pascal ... legvegso esetben egy

asm-hez mit szolnal? :))

Szoval csak most irok, mert a subject-ben irt 'kifejezes 
egyszerusito' visszariasztott... Kifejezes kiertekelot irtam mar, 
egyszerusitot meg nem. Arra bohom nagy programok vannak sok-sok 
penzert, Mathematika meg hasonlo neven.

Szoval a kiertekelest ugy szoktam csinalni, hogy egyresz van egy
GetToken nevu rutinom, ami az inputbol eloszedi a rakovetkezo
alapegyseget, ami lehet 1 vagy 2 jelbol allo irasjel (muveletjel),
vagy szamertek, vagy valtozonev. Van neki egy PutToken parja,
amivel egyetlen tokent (amit eppen most adott ki a GetToken)
vissza lehet pakolni, hogy a kov. GetToken megint ezt adja vissza.
Van ezen kivul tobb rutin, amik egy-egy precedenciaszintnek felelnek
meg. A legfelso dolgozza fel a legkisebb precedenciaju muveleteket,
stb. Valahogy igy:

(rogtonzok egy C forrast asm helyett... :)

int expr()
{
    int eredm = exprAOX();   /* AND OR XOR precedenciajuak */
    token tok = GetToken();
    if (tok == TOK_ENDOFSTRING)
        return eredm;
    else {
        /* valami rossz volt a kifejezesben, nem ert veget */
        printf("...");
        ... stb.
    }
}

int exprAOX()
{
/* AND OR XOR azonos precedenciaju (nalam), balrol-jobbra */
    int reszeredmeny = exprNOT();
    int vege = 0;
    do {
        token nexttok = GetToken();
        switch (nexttok.type) {
          case TOK_AND:
            reszeredmeny &= exprNOT();
            break;
          case TOK_OR:
            reszeredmeny |= exprNOT();
            break;
          case TOK_XOR:
            reszeredmeny ^= exprNOT();
            break;
          default:
            PutToken(tok);  // visszarakjuk, a kov. GetToken szamara
            vege = 1;
        }
    } while (vege == 0);
}

int exprNOT()
{
/* not */
    token tok = GetToken();
    if (tok == TOK_NOT)
        return ~ exprLG();
    else {
        PutToken(tok);
        return exprLG();
    }
}

int exprLG()
{
/* hasonlitasok */
    int reszeredmeny = exprAS();
    int vege = 0;
    do {
        token nexttok = GetToken();
        switch (nexttok.type) {
          case TOK_LESS:
            reszeredmeny = reszeredmeny < exprAS();
            break;
          case TOK_GREATER:
            reszeredmeny = reszeredmeny > exprAS();
            break;
          case TOK_EQUAL:
            reszeredmeny = reszeredmeny == exprAS();
            break;
          /* ide lehetne meg rakni tovabbiakat is (>=, <= != stb) */
          default:
            PutToken(tok);  // visszarakjuk, a kov. GetToken szamara
            vege = 1;
        }
    } while (vege == 0);
}

int exprAS()
{
/* osszeadas, kivonas */
    int reszeredmeny = exprMD();
    int vege = 0;
    do {
        token nexttok = GetToken();
        switch (nexttok.type) {
          case TOK_ADD:
            reszeredmeny += exprMD();
            break;
          case TOK_SUB:
            reszeredmeny -= exprMD();
            break;
          default:
            PutToken(tok);  // visszarakjuk, a kov. GetToken szamara
            vege = 1;
        }
    } while (vege == 0);
}

 ... es igy lehetne folytatni a szorzas-osztas rutinjat, aztan a
zarojeles kifejezest, legalul pedig a konstans szamerteket meg a
valtozo erteket, stb. (A zarojeles kifejezes pl megnezi, hogy a
token a zarojel, es akkor meghivja az exprAOX()-et, es ellenorzi,
hogy a kovetkezo token a csuko zarojel legyen.)

Lehetne okosabbat meg gyorsabbat is csinalni, de ez legalabb konnyen
ertheto szerintem.

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Borland C++ 4.5 HWND (mind) VÁLASZ  Feladó: (cikkei)

Hello Coderek!

Borland C++ 4.5-ben ObjectClasses-ben hogyan lehet eloszedni a window
handle-t?
Peldaul itt egy fuggveny, amely igenyli:
BOOL DrawMenuBar(
    HWND  hWnd // handle of window with menu bar to redraw
   );

Aki tudna segiteni, irjon a cimemre.

Csaba
__________________
e-mail: 
+ - Re: *** HIX CODER *** #238 -- Forraskod wanted (mind) VÁLASZ  Feladó: (cikkei)

> azert vannak ujak: valami egyszeru, karakteres jateknak
> illetve egy egyszeru lemezujsagnak kene a forraskodja.
> Lehetoleg Pascal, de a C is elmegy csak egy kicsit
> macerasabb, mert most momentan nincs forditom hozza
> probalgatni...

Egyszeru karakteres jatekok forraskodjait megtalalod az ncurses
forrasdisztribucioban.

ImRe

-- 
> --------------------------------------------------------------------------
 ... Our continuing mission: to seek out knowledge of C, to explore strange
unix commands, and to boldly code where no one has man page 4.
                                                                     (lpg)
+ - Widget vagy Gadget (mind) VÁLASZ  Feladó: (cikkei)

Hali Coderek!

X11R6 alatt widgeteket, vagy gadgeteket erdemesebb hasznalni?  Azaz melyik
general kevesebb halozati terhelest?
Mielott RTFM valaszt irnal: eddig csak X11R5-oz valo konyvet talaltam. 
Tehat specifikald az FM-et, amit R-elnem kellene.

ImRe

-- 
> --------------------------------------------------------------------------
 ... Our continuing mission: to seek out knowledge of C, to explore strange
unix commands, and to boldly code where no one has man page 4.
                                                                     (lpg)

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS