parzyst czy nie

0

Elo mam problema mianoweicie mam jakąś liczbę i chce sprawzić czy jest ona parzysta a jeśli nie to dodać do niej jeden żeby była.
I proszę mnie nie odsyłać :P

0

if Odd(x) then
x nieparzyste; dodaj 1
else
x parzyste

0
 liczba or 1
0
 liczba or 1

Ten kod z liczby -2 zrobi -1.

0

hmm, w takim razie działa to tylko jeżeli zmienna jest unsigned :-(

//również nie, bo wynikiem będzie zawsze liczba nieparzysta - a miała być parzysta - m.M

0

Odd() ?
Ja pisałem:

If liczba mod 2 = 0 then [...]

[cya]

0

CyberKid miał dobry pomysł, ale się pomylił. Ja wcześniej nie miałem czasu nad tym przysiąść. Wystarczyło rozpisać kilka wartości binarnie i wszystko stało się banalne.

Oto najbardziej optymalny kod do rozwiązania problemu:

zmienna := zmienna and -2;
inc(zmienna);

Podejrzewam, że kompilator Delphi ładnie to zapisze, ale ja bym mu nie ufał [diabel] i użył wstawki w Assemblerze:

and zmienna, -2
inc zmienna

Propozycja cimaka jest absolutnie nie do przyjęcia. Instrukcja mod używa wewnętrznie instrukcji dzielenia, która jest jedną z najwolniejszych instrukcji procesora.

P.S. Uwielbiam takie malutkie problemy, przy których można się pobawić w optymalizajcę. Dzięki za postawienie pytania (pomimo, iż było proste) [browar].

0

Qrde, rzeczywiście, pomieszanie z popyrtaniem, troszku autor wątku namieszał i zrozumiałem, że liczba końcowa ma być nieparzysta, a tym czasem miała byc parzysta :-P :-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1