3. Logické a relačné výrazy

Zistenie zostrojiteľnosti trojuholníka:

Ako zistíme, či sa trojuholník dá zostrojiť?
Z matematiky vieme, že súčet dvoch strán musí byť väčší ako tretia strana a to musí platiť súčasne pri všetkých stranách. Vtedy sa trojuholník dá zostrojiť.

Algoritmus tohto programu vyzerá nasledovne:

public static void main(String[] args)
{
      long a = načítajCeléČíslo("Zadaj a"); // do premennej a načítaj stranu a trojuholníka
      long b = načítajCeléČíslo("Zadaj b"); // do premennej b načítaj b stranu trojuholníka
      long c = načítajCeléČíslo("Zadaj c"); // do premennej c načítaj c stranu trojuholníka

      if ((a + b > c) && // ak súčet strán a + b je väčšie ako strana c a súčasne
         (b + c > a) && // súčet strán b + c je väčší ako hodnota strany a, a súčasne
         (c + a > b)) // súčet strán c +a je väčší ako hodnota strany b
      {
         System.out.println("Trojuholník je zostrojiteľný."); // ak sú splnené všetky tri podmienky súčasne, tak program vypíše na obrazovku: "Trojuholník je zostrojiteľný."
      }
      else // ak nie je splnená čo i len jedna podmienka, program prejde do vetvy else, kde vypíše na obrazovku: "Trojuholník nie je zostrojiteľný."
      {
          System.out.println("Trojuholník nie je zostrojiteľný.");
      }
}

Pri programovaní postupujeme tak, že si vytvoríme prázdnu novú triedu a pomenujeme ju napríklad Trojuholník. Aj v tomto prípade použijeme triedu Konzola a z nej budeme čítať metódu načítajCeléČíslo. Konzolu prepojíme s našou triedou Trojuholník.

Zistenie pravouholnosti trojuholníka:

Aj v tomto prípade využijeme vedomosti z matematiky. V podstate budeme dokazovať platnosť Pytagorovej vety (a*a + b*b = c*c). Využijeme podmienku if. Budeme sa pýtať, či platí Pytagorova veta pre všetky kombinácie strán. Ak je podmienka splnená čo i len v jednom prípade, trojuholník je pravouhlý.

Program vyzerá teda takto:

public static void main(String[] args)
{
      long a = načítajCeléČíslo("Zadaj a"); // do premennej a načítaj stranu a trojuholníka
      long b = načítajCeléČíslo("Zadaj b"); // do premennej b načítaj b stranu trojuholníka
      long c = načítajCeléČíslo("Zadaj c"); // do premennej c načítaj c stranu trojuholníka

      if (((a * a + b * b) == c * c) || // ak súčet strán a + b je väčšie ako strana c a súčasne
         ((b * b + c * c) == a * a) || // súčet strán b + c je väčší ako hodnota strany a, a súčasne
         ((c * c + a * a) == b * b)) // súčet strán c +a je väčší ako hodnota strany b
      {
         System.out.println("Trojuholník je pravouhlý."); // ak sú splnené všetky tri podmienky súčasne, tak program vypíše na obrazovku: "Trojuholník je zostrojiteľný."
      }
      else // ak nie je splnená čo i len jedna podmienka, program prejde do vetvy else, kde vypíše na obrazovku: "Trojuholník nie je pravouhlý."
      {
         System.out.println("Trojuholník nie je pravouhlý.");
      }
}

Úlohy na precvičenie:

Zábavné delenie:
Vytvorte program, ktorý vypíše všetky čísla od 1 po 99, ktoré sú deliteľné 7 a nie sú deliteľné 3.

(Tip: Využite vedomosti z predchádzajúcej kapitoly a použite for cyklus a podmienku. A podmienku definujte pomocou relačných a logických operátorov.)



Minibanka inak:
Prerobte cyklus do-while z príklad Minibanka z predchádzajúcej kapitoly, tak, aby, bol povolený minimálny výber 5 EUR a vyberať sa bude dať len ak je na konte viac ako 5 EUR (do mínusu sa ale ísť dá).

(Tip: Pridajte do existujúceho cyklu dve podmienky. Jedna bude jednoduchá a druhá zložená.)