Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako lepše napisati ovaj IF

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kako lepše napisati ovaj IF

[ Pregleda: 2029 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

aleksazr
zrenjanin

Član broj: 196784
Poruke: 245
*.adsl.verat.net.



+11 Profil

icon Kako lepše napisati ovaj IF12.10.2017. u 17:28 - pre 78 meseci
Code:

if (((A == B) && C) || (A != B))
 foo();


pozvati foo ako je A jednako B i C jednako 1, ili ako A nije jednako B.

Ovako nešto ponekad napišem i uvek se pitam da li može lepše,
tj. da ne piše i A jednako B i A različito B.

Kako bi ste vi napisali? Po mogućstvu u jednoj IF liniji.
CYRfree 2.0.5 - ako bi ćirilicu radije čitali kao latinicu.
Serbian Latin & Cyrillic keyboard layout 08.nov.2022 - za QWERTY tastature sa našeg tržišta.
http://users.beotel.net/~gwh/

 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-39.bvcom.net.



+1064 Profil

icon Re: Kako lepše napisati ovaj IF12.10.2017. u 17:45 - pre 78 meseci
if (C || A != B)foo();
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako lepše napisati ovaj IF12.10.2017. u 18:02 - pre 78 meseci
A evo zašto je tačni to što je Branimir napisao:

Označimo izraz A==B sa X, tada je A!=B u stvari !X ( da malo uprostim izvođenje)

Sada imamo logički izraz:

(X && C) || !X

Primenimo zakon distribucije za or prema and https://en.wikipedia.org/wiki/...e_property#Propositional_logic

(X && C) || !X = (X || !X) && (C || !X)

Izraz (X || !X) se zove zakon isključenja trećeg pa je vredost tog izraza uvek true https://en.wikipedia.org/wiki/Law_of_excluded_middle

(X || !X) && (C || !X) = 1 && (C || !X)

Sada primenimo zakon neutralnosti true prema AND (1 && Y) = Y

1 && (C || !X) = C || !X

Sada kada vratimo vrednost !X

C || (A != B)

Drugim rečima, nema magije, moraju se znati zakoni logike. Posveti malo vremena da popuniš rupe u svom matematičkom obrazovanju.
Evo na gomili većine Bulove logike https://en.wikipedia.org/wiki/Boolean_algebra
 
Odgovor na temu

aleksazr
zrenjanin

Član broj: 196784
Poruke: 245
*.adsl.verat.net.



+11 Profil

icon Re: Kako lepše napisati ovaj IF12.10.2017. u 19:57 - pre 78 meseci
U redu, jasno mi je. Hvala.

Mojim rečima bih objasnio ovako:
čim imamo izraz "A jednako B ILI" - to automatski znači da sa druge strane ILI je A različito od B, pa to ne treba ni pisati.
CYRfree 2.0.5 - ako bi ćirilicu radije čitali kao latinicu.
Serbian Latin & Cyrillic keyboard layout 08.nov.2022 - za QWERTY tastature sa našeg tržišta.
http://users.beotel.net/~gwh/

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Kako lepše napisati ovaj IF13.10.2017. u 14:56 - pre 78 meseci
Ne znači
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Kako lepše napisati ovaj IF13.10.2017. u 17:58 - pre 78 meseci
@aleksazr, mozes i tako analiticki pojednostaviti ali si napravio malu gresku.

Zapravo, tvoj pocetni izraz ((A == B) && C) || (A != B) mozes okrenuti (logicko ILI je komutativno) -> (A != B) || ((A == B) && C)
E sad ovde mozes gledati na taj nacin:
Ovo ce biti tacno ako je A != B i onda drugi deo nije bitan.
Ali, ako to nije tacno, to vec znaci da je tacno A == B pa ne moras da proveravas pa ti ostaje samo (A != B) || C sto mozes da okrenes i dobijes ono sto su ti vec dali -> C || (A != B).
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kako lepše napisati ovaj IF

[ Pregleda: 2029 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.