Kezdőoldal » Számítástechnika » Programozás » Páros számok meghatározása C-ben?

Páros számok meghatározása C-ben?

Figyelt kérdés
Van például 4db szám változó és ezek közül kéne eldönteni hogy melyik a páros és a párosak összegét belerakni egy változóba úgy hogy csak operátorokat lehet használni, ami ha jól értem azt jelenti hogy nem lehet if-et sem használni mert úgy kb 10mp alatt meglenne de nem ismerem a c nyelvet valaki letudná írni ezt hogyan kéne leírni csak operátorokkal.

#programozás #operátor #párosszámok
2021. febr. 23. 16:42
1 2 3
 21/22 anonim ***** válasza:

"eltudnád magyarázni 5-ös"

#17-es válaszoló nagyon korrektül leírta. Ugyanaz picit másképp:


A bináris egészek így jönnek sorban, mondjuk egytől:

0000 0001

0000 0010

0000 0011

0000 0100 ...

Látszik, hogy az utolsó bit felváltva 0 vagy 1. A 0 páros számra utal, az 1 páratlanra. Tehát ha ki tudjuk nyerni belől az utolsó bitet, már tudjuk, hogy páros-e.

Erre jók a bináris műveletek, amit itt konkrétan "maszkoláshoz" használunk, mert olyan, mintha letakarnánk valamivel biteket, csak az utolsó bitnél hagynánk egy lyukat.

0110 1100 / ez a vizsgálandó szám (x)

0000 0001 / vagy simán 1, ez a maszk (m)

Az ÉS bináris művelet eredménye akkor lesz 1, ha mindkét operandus 1. Ezt bitenként külön, vagyis ahol a maszk 0, ott tuti 0 lesz az eredmény, ahol 1, ott pedig az eredeti bitet kapjuk vissza, vagyis:

0000 0000 / tehát az utolsó bit 0 volt, vagyis egy páros számot vizsgáltunk. (Másik lehetőség, ha 0000 0001 lenne az eredmény.)

Ezt így írjuk le C-ben: x & m


Ternális operátor, mint kifejezés:

<logikai kifejezés> ? <érték, ha a log.kif. igaz> : <érték, ha hamis>

A logikai kifejezés akkor hamis, ha a számértéke 0, minden más esetben igaz. Vagyis a fenti eredményt fel tudjuk használni, csak pont fordítva kell, tehát 0 (páros szám) esetén adjon igazat, egyébként hamisat. Erre kell a tagadás ! jel.

Innen már csak az kell, hogy ha páros, akkor az eredeti számot adja hozzá az összeghez, ha hamis, akkor nullát, vagyis ne adjon hozzá semmit.

(!(x & m)) ? x : 0


(Lehet, hogy a külső zárójel nem is kell, de így a biztos.)

2021. febr. 24. 12:28
Hasznos számodra ez a válasz?
 22/22 anonim ***** válasza:

...Bár így talán egyszerűbb lenne:

(x & m) ? 0 : x


:))

2021. febr. 24. 12:32
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!