Új hozzászólás Aktív témák

  • Aryes

    nagyúr

    válasz tibi-d #19410 üzenetére

    anélkül, hogy az egészet kétszer le kéne gépelni.

    Persze, CTRL+C, CTRL+V :DDD

    Persze, ezer féle megoldás lehet rá.

    Ha ilyen egyszerű a feladat (csak egy összeadás-kivonás csere), akkor a legegyszerűbb a matematikai megközelítés:

    int szorzo=a?-1:1;

    c=a+b*szorzo;
    d=a+c*szorzo;
    e=b+d*szorzo;

    vagy

    c=a+b*(a?-1:1);
    d=a+c*(a?-1:1);
    e=b+d*(a?-1:1);

    Ha bonyolultabb, akkor függvénnyel:

    int muvelet (bool a, int egyik, int másik) {
    return a? egyik-másik : egyik+másik;
    }

    c= muvelet(a,b,c);
    d= muvelet(a,e,f);
    e= muvelet(a,x,y);

    vagy csak beteszed a fenti műveletet a kódba:

    c= a? egyik-másik : egyik+másik;
    d= a? egyik-másik : egyik+másik;
    e= a? egyik-másik : egyik+másik;

    Vagy ha gyors kódot szeretnél, és keveset gépelni, a kettőt lehet kombinálni, ha függvény helyett makróba teszed azt az egy sornyi kódot:

    #define MUVELET( a, egyik, másik) ({ a? egyik-másik : egyik+másik; })

    c= MUVELET(a,b,c);
    d= MUVELET(a,e,f);
    e= MUVELET(a,x,y);

    vagy

    #define SGN(a) ({a?-1:1;})

    c=a+b*SGN(a) ;
    d=a+c*SGN(a) ;
    e=b+d*SGN(a) ;

    [ Szerkesztve ]

Új hozzászólás Aktív témák