Rada začátečníkovi

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
Huri
Příspěvky: 7
Registrován: 17 led 2021, 21:02
Reputation: 0

Rada začátečníkovi

Příspěvek od Huri » 22 led 2021, 17:49

Ahoj, poradí někdo jak správně zapsat do kódu následující větu:

Pokud se proměná1 nerovná číslu 1, nebo číslu 4 , nebo číslu 6.

Vím, jen:

if (promena1 != 1){ \\ ale nevím jak přidat ta další čísla...
}

Díky :-)

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Rada začátečníkovi

Příspěvek od gilhad » 22 led 2021, 18:07

Chces rict: pokud se promenna1 nerovna 1 a pritom se promenna1 nerovna 4 a pritom se promenna1 nerovna 6

Kód: Vybrat vše

if ( (promena1 != 1) && (promena1 != 4) && (promena1 != 6) ) {
  // tak se nerovna ani jednomu z tech cisel
}

(v nekterych pripadech muze mit i smysl to vnorit, ale vetsinou je ten prvni pristup lepsi )

Kód: Vybrat vše

if (promena1 != 1) { //tak to neni 1
   if (promena1 != 4) { // tak to neni 1 a pritom to neni ani 4
      if (promena1 != 6)  { // a navic dokonce ani 6
         // tak se nerovna ani jednomu z tech cisel
       };
    };
}

Huri
Příspěvky: 7
Registrován: 17 led 2021, 21:02
Reputation: 0

Re: Rada začátečníkovi

Příspěvek od Huri » 22 led 2021, 18:27

To je vono :-)

if ( (promena1 != 1) && (promena1 != 4) && (promena1 != 6) ) {
// tak se nerovna ani jednomu z tech cisel
}

Tušil jsem že to bude nějak tak, ale nemohl jsem na to přijít. Hned to jdu zkusit.

Ta druhá varianta mě napadla, ale ta se mi tam nehodí.

Díky

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Rada začátečníkovi

Příspěvek od gilhad » 22 led 2021, 18:43


KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Rada začátečníkovi

Příspěvek od KamilV » 23 led 2021, 19:48

Jen kosmetika, ale pokud jsou všechny operátory stejné, tak tam ty vnitřní závorky ani být nemusí.
Chyba to není, jen za sebe mohu říct, že se mi to hůř čte, protože s napětím očekávám, že se tam v řadě objeví nějaký OR a ono nic :lol:

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Rada začátečníkovi

Příspěvek od gilhad » 24 led 2021, 16:32

Nemusi, ale zase priorita a grupovani operatoru nejsou pro zacatecniky prilis intuitivni, zavorky jsou celkem jednoznacne a pokud clovek program meni a kopiruje kusy sem a tam, tam dodatecna kontrola neni na skodu. Samozrejme to jde napsat ruzne, napriklad

Kód: Vybrat vše

if(1&promenna1?~1&promenna1:1<<2&promenna1?~6&promenna1:1) {
  // at ziji operatory
}
Je to sice bez vnitrnich zavorek a kompatni a vysledek je stejny (pro int promenna1), ale zacatecnikovi byt to fakt nedoporucoval :lol:

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Rada začátečníkovi

Příspěvek od ondraN » 24 led 2021, 17:54

Já se řídím zásadou, že závorek není nikdy dost. Ta priorita operátorů dokáže vyrobit naprosto nepochopitelné chyby, které se blbě hledají (obvzláště když jde o pointery). Závorky jsou jasné a silně zvyšují čitelnost programu a tím i snižují čas na ladění :mrgreen:

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů