Keresés

Aktív témák

  • Miracle

    senior tag

    válasz tomcs #180 üzenetére

    igaz, a char* visszateresi ertekre semmi szukseg, ez csak affele c++os szokas ahol altalaban az ilyesmi metodusok sajat magukra adnak vissza referenciat.

  • Miracle

    senior tag

    válasz Jester01 #168 üzenetére

    Mellesleg Miracle kódjával vigyázni kell, mert bár úgy látszik mintha új stringet adna vissza, valójában helyben fordítja meg. Ezzel két baj van: az összes többi helyen, ahol eltároltad a stringre mutató pointert szintén megfordul, illetve nem adhatsz be neki konstans stringet. Ha tehát úgy próbáltad ki pl. hogy megfordit(''abcde'') akkor az bizony segfault, mert a konstans string az nem írható, kivéve, ha erre külön kéred a fordítót (de ne tedd):

    ha C kodot keszitek, akkor igyekszek olyat kesziteni, hogy az szepen simuljon a glibc-be, mert en altalaban ezt a C libet hasznalom. Szoval a fuggvenyem nem veletlenul vagy lustasagbol nem foglal helyet maganak, hanem azert, mert ez igy jobban hasznalhato, es szebben valasztja el a stringfordito viselkedest minden mastol, es igy tobb helyen fel lehet hasznalni, mint egy olyan fuggvenyt, ami maganak allokal teruletet. mindenfele C libek fejlesztoi is kifejezetten ugyelnek arra, hogy csak olyan fv foglaljon teruletet, aminek a funkcioja kifejezetten terulet allokalas, mint pl az atrdup(). persze nehany helyen meg kikerulhetetlen, hogy a lib foglaljon helyet nekunk, mert pl. valamilyen adatstrukturat kell feltoltenie, de ilyenkor a fuggveny definiciojaban szepen leirjakhogyha beleirsz halottvagy, es ami kell azt MASOLD ki, es utana szabaditsd fel az erre szolgalo fv.el. ha en allokalnek helyet, akkor konnyen elofordulhatna ilyen hiba:
    str = megfordit (str); es rogton buktam nehany byteot, ami sosem jo. arrol az aprosagrol ne is beszeljunk hogy din. memoriafoglalas nem annyira gyors, mint inkabb lassu, nem minden rendszeren, es nem minden korulmenyek kozott erheto el, ha mar van 1 giga din.an foglalt memoriad linuxon pl mar konnyen lehet hogy elszall a progi meg ha 4 giga van is a masinaban. szoval egy fuggveny a leheto legkevesebb olyan muveletet vegezzen, aminek esetleg lehetnek mellekhatasai, es a leheto legkevesebb funkcionalitast valositsa meg, ami mar megfelel a specifikacionak. (szerintem)

    u.i. elindexelesert sorry, elofordul nalam :(

  • Miracle

    senior tag

    válasz tomcs #164 üzenetére

    este 7kor fekudtem, igazabol nem vagyok faradt :) de en is tanulni akarok.
    es van jegyzeted hogy mirol van szo? es milyen es mekkora essze?
    najo de ne offoljuk szet ezt a topikot inkabb jelentkezz be icqra

  • Miracle

    senior tag

    válasz tomcs #162 üzenetére

    ahah most ebredtem ne szorakozz velem.
    amugy visszaadtad.
    tud.fant.vilagnezetekrol nincs valami infod? ;]

  • Miracle

    senior tag

    válasz VladimirR #158 üzenetére

    bizony bizony ez elszall segfaulttal, ime egy jobban mukodo megoldas:


    char* megfordit(char *str)
    {
    char temp;
    int p = 0;
    int l = strlen(str);
    while (l - p > l/2)
    {
    temp = str[p];
    str[p] = str[l-p];
    str[l-p] = temp;
    ++p;
    }
    return str;
    }



  • Miracle

    senior tag

    válasz Atom #142 üzenetére

    bocsi csak uj gepet vettem, gentoot telepitettem, es igy nem volt tisztesseges grafikus bongeszom. de elhangzott a helyes megoldas ugy lattam :)

  • Miracle

    senior tag

    válasz Atom #140 üzenetére

    windows alatt egyszer es nemolyanrossz kornyezet a devc++, freeware, google megmondja hol a honlapja. ha egyetemista vagy akkor erdemes visualstudiot megnezni campus licensszel, igaz az egy baromi nagy rendszer, kezdeni a devc++ sokkal jobb.
    linux alatt g++ tetszoleges editorral (pl. (g)vim, emacs) vagy kdevelop.

  • Miracle

    senior tag

    válasz BaLinux #125 üzenetére

    hat azert az orak idobeni korlatai altalaban eleg szukosek, foleg nemprogmaton es nemmuinfon. igaz ilyen helyen minek tanitanak c++t...

  • Miracle

    senior tag

    válasz repvez #126 üzenetére

    ezt mar annyiszor es annyi helyre leirtuk szerintem ezen a forumon hogy meg egyszer nem fogom leirni. lehet, hogy ebben a forumban is talalsz ide vonatkozo postokat, lehet hogy erdemesebb inkabb a ,,programozas forum'' topicban nezelodni, soksikert

  • Miracle

    senior tag

    válasz Boolash #123 üzenetére

    kigyos jatekban a legnehezebb resz a grafika megvalositasa, tudni kellene, hogy milyen op.rendszert es milyen fejlesztokornyezetet hasznalsz, es azt is ki kellene talalni, hogy valodi grafikus programot szeretnel, vagy karaktereset?

  • Miracle

    senior tag

    válasz #53246592 #111 üzenetére

    a temp egy lokalis valtozo, akkor lesz felszabaditva, amikor a blokk vegeter, amiben deklaraltad, tehat amikor a return meghivodik. DE! a te kodod mukodni fog, mert ertek szerint adod vissza a vektort, es mivel egy eleg egyszeru kis adatszerkezetnek tunik valoszinuleg jo hozza az alapertelmezett copy-konstruktor(ilyenkor hulyeseg sajatot irni), es ha ertek szerint adsz vissza, mint a jelenlegi helyzetben is (lehet meg ugy referenciat visszaadni, vagy akar pointert is) az fog meghivodni, es egy masik (az eredeti fugggvenyben letrehozott temporaris) CVector objektumba fogja belemasolni a temp objektumot(mezonkent). a hivasi stacken a hivas elott letrehozott objektum addig fog elni, amig ki nem ertekelodik az a kifejezes, aminek reszet kepezi. tehat ha ott a cimere allitasz egy masik referenciat, vagy pointert (amiert valoszinuleg warningot is dob a fordito) akkor hibat kovetsz el, de ha nem, akkor nincs semmi problema.

  • Miracle

    senior tag

    válasz GodHeart #78 üzenetére

    kuldj vegig valami jo virusirtot friss adatbazissala gepeden, es meglatjuk :) de szerintem okozhat, igen.

  • Miracle

    senior tag

    válasz pite_r1 #71 üzenetére

    Hello.
    a BC 3.x meg a 4.x meg a c++ szabvany megjelenese elotti dolgok, ezert a kovetkezo tippeket adnam:
    ezt:
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <set>
    csereld ki erre:
    #include <iostream.h>
    #include <string.h>
    #include <fstream.h>
    #include <set.h>
    es ha nem mukodik, akkor probald meg elhagyni a using namespace std; sort, mert az is elkepzelheto, h meg nem tettek a std libet a std nevterbe :)
    ha ezek nem mukodnek, akkor a standard fuggvenyek meg nem ugy mukodnek, ahogy kellene nekik, es nem tudok segiteni sajnos, mert nincs BC++ 3.x em.

  • Miracle

    senior tag

    válasz pite_r1 #56 üzenetére

    nem, mert
    a nem tudom, milyen grafikus konyvtarra gondoltal
    b gyanitom, h borland c++ 3.x-re, nekem meg olyanom nincs(es nem is lesz)
    c az egy bonyolultabb feladat, van most nekem is dolgom, nincs idom megcsinalni.

  • Miracle

    senior tag

    válasz silentBob #54 üzenetére

    1: NEM KELL TOBB HELYEN FELTENNI A KERDEST, ES VEGKEPP NEM KELL MINDEN HULYESEGNEK TOPICOT NYITNI, MERT ROHADT IDEGESITO!!!!
    itt van 1 trinaris fa postorder bejarassal, szep kiiro es beolvas operatorokkal, a step fuggvenyt kell atirni h inorder legyen, csak ki kell cserelni 6 sor sorrendjet, de ha mar tudsz topicot nyitni nyilvan ez is menni fog.


    //---------------------------------------------------------------------------
    // Tree
    //---------------------------------------------------------------------------
    #ifndef TREE_H
        #define TREE_H

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
    #include <map>
    #include <set>




    template<class eT1>
    struct tree_element
    {
        tree_element()
                {
                p_dat = new eT1();
                p_left = 0;
                p_mid = 0;
                p_right = 0;
                p_parent = 0;
                }
        tree_element(const eT1& t1,
                     tree_element* l,
                     tree_element* m,
                     tree_element* r,
                     tree_element* p)
                {
                        p_dat = new eT1(t1);
                        p_left = l;
                        p_mid = m;
                        p_right = r;
                        p_parent = p;
                }
        ~tree_element()
                {
                       &nbsp.|. p_dat;
                       &nbsp.|. p_left;
                       &nbsp.|. p_right;
                       &nbsp.|. p_mid;
                }
        tree_element<eT1> *p_left, *p_mid, *p_right, *p_parent;
        eT1* p_dat;
    };

    template<class cT1> class c_tree
    {
    public:
        c_tree()            :cap(0) {p_top = p_act = new tree_element<cT1>();}
        ~c_tree()           {delete p_top;}

        void reset()        {p_act = p_top;}
        void empty()        {delete p_top; p_top = p_act = new tree_element<cT1>();}
    /**********   FELADAT MEGOLDÁSA    ****************************************/
    /**/void step();        //postorder
    /**/cT1* get_first_repeating();//ez a feladat
    /***************************************************************************/

        bool read_tree(std :: istream& is, std :: ostream& os = std :: cout);
        void print_tree(std :: ostream& os);
    //Teszteléshez használt függvények
        void set_act(cT1& const t1)  {*p_actual -> p_dat = t1;}
        int get_capacity()  {return cap;}
        tree_element<cT1>* get_top()    {return p_top;}
        tree_element<cT1>* get_act()    {return p_act;}
        cT1* get_data_adr()  {return p_act -> p_dat;}
        cT1 get_data()       {return *get_data_adr();}
    private:
        void read_branch(tree_element<cT1> * p_a, int c, std :: istream& is, std :: ostream& os);
        void print_branch(tree_element<cT1> *p_a, int c, std :: ostream& os, bool other_one = false);
        tree_element<cT1> *p_top;
        tree_element<cT1> *p_act;
        int cap;
        std :: map<int, bool> blocked_columns;
    };

    template<class fT1>
    std::istream& operator>> (std::istream& is, c_tree<fT1>& t);

    template<class fT1>
    std::istream& operator>> (std::istream& is, c_tree<fT1>& t)
    {

        t.read_tree(is);
        return is;
    }

    template<class fT1>
    std::ostream& operator<< (std::ostream& os, c_tree<fT1>& t);

    template<class fT1>
    std::ostream& operator<< (std::ostream& os, c_tree<fT1>& t)
    {

        t.print_tree(os);
        return os;
    }


    template <class fT1>
    void c_tree<fT1> :: read_branch(tree_element<fT1> * p_a, int c, std :: istream& is, std :: ostream& os)
    {
        fT1 temp;
        std :: string str_temp;
        std :: istringstream isstr;
        tree_element<fT1> *null_pointer = 0;

        for(int i = 1 ; i < c ; ++i)  os << ' ' << ((blocked_columns) ? ' ' : char(179)) << ' ' ;
        os << ' ' << char(195) << char(196) << char(196) << char(194) << char(196);
        is >> str_temp;

        if (str_temp != ''x'')
        {
                blocked_columns[c]=false;
                isstr.str(str_temp);
                isstr >> temp;
                p_a -> p_left = new tree_element<fT1>(temp, null_pointer, null_pointer, null_pointer, p_a);
                read_branch(p_a -> p_left, c+1, is, os);
                ++cap;
        }

        str_temp = '''';
        isstr.clear();

        for(int i = 1 ; i < c ; ++i)  os << ' ' << ((blocked_columns
    ) ? ' ' : char(179)) << ' ' ;
        os << ' ' << char(195) << char(196) << char(196) << char(194) << char(196);
        is >> str_temp;
        if (str_temp != ''x'')
        {
                isstr.str(str_temp);
                isstr >> temp;
                p_a -> p_mid = new tree_element<fT1>(temp, null_pointer, null_pointer, null_pointer, p_a);
                read_branch(p_a -> p_mid, c+1, is, os);
                ++cap;
        }

        str_temp = '''';
        isstr.clear();

        for(int i = 1 ; i < c ; ++i)  os << ' ' << ((blocked_columns) ? ' ' : char(179)) << ' ' ;
        os << ' ' << char(192) << char(196) << char(196) << char(194) << char(196);
        is >> str_temp;
        if (str_temp != ''x'')
        {
                blocked_columns[c]=true;
                isstr.str(str_temp);
                isstr >> temp;
                p_a -> p_right = new tree_element<fT1>(temp, null_pointer, null_pointer, null_pointer, p_a);
                read_branch(p_a -> p_right, c+1, is, os);
                ++cap;
        }
    }

    template <class fT1>
    bool c_tree<fT1> :: read_tree(std :: istream& is, std :: ostream& os)
    {
        for(int i = 0; i < 3000; ++i)  blocked_columns
     = true;
        fT1 temp;
        os << ''Kerem az adatokat\n'';
        os << char(196) << char(194) << char(196);
        is >> temp;
        p_top -> p_dat = new fT1(temp);
        read_branch(p_top,1, is, os);
        return true;
    }

    template <class fT1>
    void c_tree<fT1> :: print_branch(tree_element<fT1> *p_a, int c, std :: ostream& os, bool other_one)
    {
        for(int i = 1 ; i < c; ++i) os << ' ' << ((blocked_columns) ? ' ' : char(179)) << ' ';
        os << ' ' << char (other_one ? 195 : 192)  << char(196) << char(196) << char(( p_a->p_left != 0 || p_a -> p_right != 0) ? 194 : 196)<< char(196)   << *p_a -> p_dat << endl;
        if (p_a -> p_mid != 0)
        {
                if(p_a -> p_left != 0 && p_a -> p_right != 0)
                {
                        blocked_columns[c+1] = false;
                        print_branch(p_a -> p_left, c+1, os, true);
                        print_branch(p_a -> p_mid, c+1, os, true);
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_right, c+1, os, false);
                }
                if(p_a -> p_left != 0 && p_a -> p_right == 0)
                {
                        blocked_columns[c+1] = false;
                        print_branch(p_a -> p_left, c+1, os, true);
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_mid, c+1, os, false);
                }
                if(p_a -> p_left == 0 && p_a -> p_right != 0)
                {
                        blocked_columns[c+1] = false;
                        print_branch(p_a -> p_mid, c+1, os, true);
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_right, c+1, os, false);

                }
        }
        else //(p_a -> p_left == 0 && p_a -> p_right == 0)
        {
                if(p_a -> p_left != 0 && p_a -> p_right != 0)
                {
                        blocked_columns[c+1] = false;
                        print_branch(p_a -> p_left, c+1, os, true);
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_right, c+1, os, false);
                }
                if(p_a -> p_left != 0 && p_a -> p_right == 0)
                {
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_left, c+1, os, false);
                }
                if(p_a -> p_left == 0 && p_a -> p_right != 0)
                {
                        blocked_columns[c+1] = true;
                        print_branch(p_a -> p_right, c+1, os, false);
                }
        }


    }

    template <class fT1>
    void c_tree<fT1> :: print_tree(std :: ostream& os)
    {
        for(int i = 0; i < 3000; ++i)  blocked_columns
     =true;
        print_branch(p_top, 1, os, false);
    }

    template <class fT1>
    void c_tree<fT1> :: step()
    {
        if (p_act == p_top)
        {
                while(p_act -> p_left || p_act -> p_mid || p_act -> p_right  )
                {
                        if(p_act -> p_left)
                        {
                                p_act = p_act -> p_left;
                                continue;
                        }
                        if(p_act -> p_mid)
                        {
                                p_act = p_act -> p_mid;
                                continue;
                        }
                        if(p_act -> p_right)
                        {
                                p_act = p_act -> p_right;
                                continue;
                        }

                }
        }
        else //(p_act != p_top)
        {
                if (p_act == p_act -> p_parent -> p_left)
                        p_act = ((p_act -> p_parent -> p_mid) ? (p_act -> p_parent -> p_mid) : ((p_act -> p_parent -> p_right) ? p_act -> p_parent -> p_right : p_act -> p_parent));
                else if (p_act == p_act -> p_parent -> p_mid)
                        p_act = (p_act -> p_parent -> p_right ? p_act -> p_parent -> p_right : p_act -> p_parent);
                else if (p_act == p_act -> p_parent -> p_right)
                        p_act = p_act -> p_parent;
        }
    }

    template <class fT1>
    fT1* c_tree<fT1> :: get_first_repeating()
    {
        std :: set<fT1> once_found;
        typedef std :: set<fT1>::const_iterator SCI;
        SCI temp  = once_found.end();

        reset();
        step();

        while(p_act != p_top)
        {
                temp = once_found.find(*get_data_adr());
                if (temp == once_found.end())
                        once_found.insert(*get_data_adr());
                else
                        return get_data_adr();
                step();
        }
        return 0;
    }
    #endif // Unit1_H

  • Miracle

    senior tag

    válasz pite_r1 #51 üzenetére

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <set>
    using namespace std;

    string& conv(string&);

    int main()
    {
        cout << ''Kerem a beolvasando file nevet:'';
        string f, temp;
        cin >> f;
        ifstream ifs(f.c_str());
        set<string> sorok;
        
        while(ifs)
        {
            getline(ifs, temp);
            sorok.insert(conv(temp));        
        }

        cout << ''kerem a kiirando file nevet: '';
        cin >> f;
        ofstream ofs(f.c_str());
        for(set<string>::iterator si = sorok.begin(); si != sorok.end(); ++si)
            ofs << *si << '\n';
       
        return 0;
    }

    string& conv (string& s)
    {
        for(int i = 0; i < s.size(); ++i)
            switch(int(s))
            {
                case 130: 
                    s
     = 'e';
                    break;
                case 141:
                case 161:
                    s = 'i';
                    break;
                case 144:
                    s
     = 'E';
                    break;
                case 148:
                case 149:
                case 162:
                    s = 'o';
                    break;
                case 151:
                case 163:
                    s
     = 'u';
                    break;
                case 153:
                    s = 'O';
                    break;
                case 154:
                    s
     = 'U';
                    break;
                case 160:
                    s = 'a';                           
                    break;
                //ha kihagytam volna ASCII kodokat, ide ertelem szeruen be lehet szurni
            }
        
        return s;
    }

  • Miracle

    senior tag

    válasz ReJim #48 üzenetére

    minden fordito mukodik parancssoros modban, tehat eleg beszerezned egy forditot, es tetszoleges text-editorral irt c++ kodot le tudsz vele forditani.(akar gcc is)
    persze vannak fejlesztokornyezetek is(a teljesseg igenye nelkul):

    DevC++ ez egy igen alap, egyszeru, de tobbe kevesbe mukodo ingyenes kornyezet

    Visualc++ 6 ez elegge c++ orientalt, de fizetos

    visual studio .NET itt mar nem a c++ all kozeppontban, kezdonek nem ajanlom

    borland c++ builder 6 delphi-szeru(VCL, CLX alapu) c++ fejlesztokornyezet c++-hoz, nagyon egyszeru hasznalni, es eleg alap c++ tudassal is tudsz vele grafikus feluletu programokat fejleszteni, van ingyenes, personal edition valtozata, letoltheto a borland.com -rol regisztracio utan

    borland cBuilderX teljesen Javaban irott fejlesztoi kornyezet tobb platform ala(windows, linux, solaris alatt is mukodik) es tobb forditoval is, kivallo eszkoz multiplatform alkalmazasok fejlesztesehez, es szinten nagyon egyszeru hasznalni(istenkiraly debuggerrel), es letoltheto a borland.comrol.

    [Szerkesztve]

  • Miracle

    senior tag

    válasz VladimirR #46 üzenetére

    dehogynem
    char ujkarakter;
    ujkarakter = //valami;
    scr[1999] = ujkarakter

    //es a kiiratas mehet mondjuk minden kor utan:
    std :: cout << scr;

    [Szerkesztve]

  • Miracle

    senior tag

    válasz VladimirR #44 üzenetére

    hat mondjuk igy:
    char scr[2000];
    //itt szepen feltoltod adattal
    majd
    std :: cout << scr ;
    :)
    szerk: bar csak remelni tudom, h ez a karaktertomb kiiratas modja, std::stringet hasznalok. de az joval lasabb.

    [Szerkesztve]

  • Miracle

    senior tag

    válasz anaqer #42 üzenetére

    nekem is be szokott :) bar en nem tudok ilyen frappans mondatot a vegere :C

  • Miracle

    senior tag

    válasz anaqer #40 üzenetére

    ''vagy keritesz egy regi 16bites forditot(ez gany megoldas)''
    magamtol ideztem. ez volt az 1. lehetoseg :P

  • Miracle

    senior tag

    válasz VladimirR #38 üzenetére

    Hello.
    te egy komoly problemaval kerultel szembe, es ez nem mas, mint a windows lelkivilaga(semmifele pejorativ felhang, nincs jobb megoldas)
    te azt latod, hogy konzol. aminek van win32 API interface. a konzol csak ilyen APIju szoffereket futtat. amikor te egy DOSos programot futtatsz, akkor egy beepitett picike VM reteg kerul a szoftver rendszerhivasai, es a WIN32 API koze(nem csak a konzol-megjelenitessel, mindennel kapcsolatban) es ekkor ez a VM szepen rendszeresen forditja a fent emlitett memoriateruletre erkezett valtoztatasokat(nem emlexem a cimre) szabvanos, win32 eljarasokra. de ez a VM csak akkor indul, ha 16bites, DOSos alkalmazast futtatsz a gepeden. tehat
    vagy keritesz egy regi 16bites forditot(ez gany megoldas)
    vagy megkeresed a win32 idevago fuggvenyeit (ez a legjobb)
    vagy irsz kepernyfrissito eljarast, ami bar eleg lassu lesz, de mukodik majd rendesen egy adott konzolmeretre(erdemes 1 darab 80*25 meretu char*ban tarolni az egesz kepernyot, es ezt kiiratni futasonkent)
    vagy jobban beleasod magad a cin-cout rendszerbe, mint en tettem, es megtalalod a pozicionalo fuggvenyt
    vagy megnezed, hatha a compiler-specifikus C/C++ STD library tamogat ilyesmit.
    szerintem.

  • Miracle

    senior tag

    válasz VladimirR #36 üzenetére

    biztos vagy benne, hogy az a memoriaterulet az adott programe? es hogy mindamellett szabad is?

  • Miracle

    senior tag

    és próbáld meg ezt az lnko-t:

    int lnko( int a, int b)
    {
    a = (a<0) ? -a : a; //nem kell szarozni a negatív számokkal
    b = (b<0) ? -b : b;

    while(a != b)
    {
    if (a < b) b -= a;
    else a -= b;
    }
    return a;
    }

  • Miracle

    senior tag

    válasz Niquis #7 üzenetére

    ''Szemantikailag még nem néztem.
    Ja és remélem az az <iostream> az elején, <iostream.h> -t akar jelenteni. ''

    a legújabb kódoláűsi konvencióknak, és a c++ szabvány legújabb(amúgy már 5+ éves) változának megfelelően az
    #include <iostream>
    formátum használandó a standard könyvtár esetében, a .h kiterjesztésű változat kompatibilitási okokból támogatott, de sok helyen, pl. visual studio 7 nem egészen ugyan úgy működik. ha a kedvenc fordítód nem fogadja el a .h kiterjesztés nélküli std-lib includeokat akkor ideje frissíteni, mert már tényleg baromi régi lehet, sorry. nomeg asszem a .h kiterjesztésű változatokban még nincs az egész std névtérbe pakolva, bár erre nem mernék megesküdni, a VS6ba is belefért a 15 éve eltörölt for-változó-definíció-scope-bővítés ''feature'', sok ''nem túlképzett'' programozó életét megnehezítve ezzel.

  • Miracle

    senior tag

    válasz angelka #1 üzenetére

    hát első ránézésre csak ennyi:
    (d = d--);
    ezt cseréld ki erre :
    d--;
    azért mert a d-- kifejezés először visszaadja d értékét majd csökkenti d értékét, és ekkor az operator= hajtódik végre, az eredeti d jobbértékkel, azaz nem a csökkentettel.
    amúgy a fenti kifejezés nem determinisztikus, lehet, hogy van olyan fordító, amin működik, de mindenképpen hibás kód.

    [Szerkesztve]

Aktív témák