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
 11/22 A kérdező kommentje:
köszönöm szépen
2021. febr. 23. 17:29
 12/22 anonim ***** válasza:
100%

#include <stdio.h>

#include <stdlib.h>


int main(int argc, char* argv[]) {

unsigned short i = 1;

unsigned int osszeg = 0;

for (; i < argc; i++) {

osszeg += atoi(argv[i]) * !(atoi(argv[i]) % 2);

}

printf("Összeg: %d\n", osszeg);

return 0;

}



[link]



Semmiféle vizsgálat nincs benne, úgyhogy ha hülyeséget adsz be neki, akkor is lefut.

2021. febr. 23. 17:30
Hasznos számodra ez a válasz?
 13/22 anonim ***** válasza:
100%

A ternális operátoros megoldás is jó, de ha maradékot képzel kettővel, akkor páros szám esetén ugye 0 a maradék, ezt tagadod, akkor páratlan szám esetén ez egy lesz, azzal szorzod a számot, és így adod hozzá összeghez.


Tehát !(x modulo 2) páratlan szám esetén 1, összeg = összeg + x * (!(x modulo 2)).


Nem tudom, hogy ciklust lehet-e használni, de tetszőleges mennyiségű szám esetén így lehet megcsinálni. Ha ha csak fixen 4 számod van, akkor kibonthatod a ciklust.

2021. febr. 23. 17:36
Hasznos számodra ez a válasz?
 14/22 anonim ***** válasza:

"akkor páratlan szám esetén ez egy lesz"


Akarom mondani, páros szám esetén lesz egy.

2021. febr. 23. 17:37
Hasznos számodra ez a válasz?
 15/22 A kérdező kommentje:
köszi úgy tűnik ez a ternális operátoros lesz a jó ilyesmi példák voltak előző feladatoknál csak nem nagyon értettem mi ez mert még sose használtam ezeket :D
2021. febr. 23. 17:41
 16/22 A kérdező kommentje:
Egyébként eltudnád magyarázni 5-ös hogy ennél a ternális operátoros megoldásnál mi mit is csinál mert a tagadáson kívül nekem minden kínainak tűnik. :/
2021. febr. 23. 17:50
 17/22 anonim ***** válasza:
100%

(!(a & 1)) ? a : 0

Ternális operátor, annyit tesz hogy három operandusa, "bemenete" van. Az első egy feltétel, amit kiértékelünk. Ha igaz, akkor a második (a kérdőjel utáni), ha hamis akkor a harmadik (kettőspont utáni) kifejezést adja vissza.

A & bitenkénti ÉS művelet. A két (kettes számrendszerben ábrázolt) szám mindegyik helyiértékére kiszámolod a logikai ÉS eredményét. (Itt nyernek értelmet a logikai műveletek, amiket felteszem már tanultatok, de nem igazán használtatok.) Az 1 kettes számrendszerben mindenhol nulla, csak a legutolsó helyiértéken 1: pl. 0000 0001. Az "a" változó értéke legyen mondjuk 3: 0000 0011.


0000 0011

0000 0001 &

-----------

0000 0001


Az "& 1" miatt csak az utolsó helyiérték "marad meg", vagy 0 vagy 1 lesz az eredmény. Páratlan "a" esetén 1, páros esetén 0. ez volt eddig a (a & 1) rész. A felkiáltójel ezt negálja, szimplán 0 -> 1, 1 -> 0 lesz. A 0 és 1 ugye értelmezhető booleanként, azaz hamisként és igazként, így értékeli ki a program ezt a kifejezést. Ha a (!(a & 1)) igaz, akkor a szám páros, és a ternális operátor második részét kapod meg. Ha páratlan, akkor a harmadikat.

A ternálissal használhatod a modulot, azaz a % operátort, ez két szám osztása után keletkező maradékot adja meg. Tehát 7 % 2 = 1. Ekkor a ternálisod valahogy így nézne ki: (a % 2 == 0) ? a : 0

Vagy meg is fordíthatod: (a % 2 == 1) ? 0 : a

Vagy "egyszerűsíthetsz": (a % 2) ? 0 : a. Ugyan az egyenlőségvizsgálat elhagyásával rövidebb kódot írtunk, de kicsivel nehezebben olvasható.

2021. febr. 23. 18:53
Hasznos számodra ez a válasz?
 18/22 A kérdező kommentje:
Nagyon köszönöm
2021. febr. 24. 09:56
 19/22 anonim ***** válasza:
0%

Egyébként, léteznek ternális /tehát nem analóg vagy bináris/ számítógépek is.

Ajánlom ezek megtekintéséhez, a működésükbe való bepillantáshoz a témában elérhető youtoube videókat.

Keyword: ternary computer

2021. febr. 24. 10:03
Hasznos számodra ez a válasz?
 20/22 anonim ***** válasza:
19: Ez most, hogy a rákba jön ide? Semmi köze a kérdéshez - csak be akartál nyögni valami nagyot? :)
2021. febr. 24. 11:36
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!