Vánoční nadílka Vánoční nadílka
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací

Cvičení k 5. lekci Javy

Java Základní konstrukce Cvičení k 5. lekci Javy American English version English version

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Následující 3 cvičení vám pomohou procvičit znalosti programování v Javě z minulé lekce. Ve vlastním zájmu se je pokuste vyřešit sami. Pod článkem máte pro kontrolu řešení ke stažení. Ale pozor, jakmile se na něj podíváte bez vyřešení příkladů, ztrácí pro vás cvičení smysl a nic se nenaučíte :)

Pokud si opravdu nebudete vědět rady, podívejte se raději znovu do minulého tutoriálu a pokuste se na to přijít.

Ohlasy studentů

Jednoduchý příklad

Vytvořte program, který si na vstupu nechá zadat jméno uživatele. Program analyzuje délku zadaného jména. Pokud je délka jména mezi třemi a deseti znaky, vypíše, že má uživatel normální jméno. V ostatních případech vypíše, že je jméno příliš krátké nebo dlouhé.

Ukázka obrazovky programu:

DelkaJmena
Zadej své jméno:
Bolehlavoslav
Máš moc krátké nebo moc dlouhé jméno!

A výstup programu pro normální jméno:

DelkaJmena
Zadej své jméno:
Karel
Normální jméno.

Středně pokročilý příklad

Vytvořte program, který si na vstupu nechá zadat smajlíka. Následně vypište slovy o jakou emoci se jedná. Rozeznávejte smajlíky:

  • :-) - "Tvůj smajlík je veselý"
  • :-( - "Tvůj smajlík je smutný"
  • :-* - "Tvůj smajlík je zamilovaný"
  • :-P - "Tvůj smajlík je s vyplazeným jazykem"
  • jakýkoli jiný - "Tvůj smajlík je neznámý"

Pokud zadaný smajlík nesouhlasí ani s jedním z těchto, program vypíše, že je neznámý. K řešení aplikace použijte konstrukci switch.

Zamyslete se nad tím, aby program rozeznával smajlíky s nosem i bez nosu.

Ukázka obrazovky programu:

Smajik
Zadej smajlíka:
:-P
Tvůj smajlík je s vyplazeným jazykem

Pokročilý příklad

Vytvořte program, který si na vstupu vyžádá postupně koeficienty a, b, c kvadratické rovnice ax2 + bx + c = 0 a vypočítá její reálné kořeny pomocí diskriminantu.

Vzoreček pro výpočet diskriminantu je:

d = b2 - 4 * a * c

A vzoreček pro výpočet kořenů je:

  • x1 = (-b + odmocnina(d)) / 2a
  • x2 = (-b - odmocnina(d)) / 2a

Komplexními kořeny se nezabývejte, při záporném diskriminantu tedy program vypíše, že rovnice nemá řešení.

Ukázka obrazovky programu:

KvadratickaRovnice
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
2
-4
2
Rovnice má jeden kořen x = 1.000000

V případě žádného řešení bude hláška následující:

KvadratickaRovnice
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
1
2
3
Neexistuje řešení v oblasti reálných čísel

V případě dvou kořenů bude vaše obrazovka vypadat takto:

KvadratickaRovnice
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
8
-6
-3
Rovnice má 2 reálné kořeny x1 = 1,093070, x2 = -0,343070

A konečně pokud uživatel nezadá kvadratickou rovnici, reakce vašeho programu bude následující:

KvadratickaRovnice
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
0
2
6
Není kvadratická rovnice


 

Stáhnout

Staženo 1271x (50.51 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
14 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Miniatura
Předchozí článek
Podmínky (větvení)
Miniatura
Všechny články v sekci
Základní konstrukce jazyka Java
Miniatura
Následující článek
Cykly v Javě
Aktivity (17)

 

 

Komentáře
Zobrazit starší komentáře (148)

Avatar
Matúš Olejník:25. listopadu 19:10

Pre intervaly <-1, 2> a <-2, 2> myslíš že máš správny výstup?

Odpovědět 25. listopadu 19:10
/* I am not sure why this works but it fixes the problem */
Avatar
Majkelko
Člen
Avatar
Majkelko:25. listopadu 19:59

:D ok dakujem, na zaporne cisla som vôbec nemyslel.

 
Odpovědět 25. listopadu 19:59
Avatar
Odpovídá na Majkelko
Matúš Olejník:25. listopadu 20:37

Nabudúce viacej testovania než sťažovania :D

Odpovědět 25. listopadu 20:37
/* I am not sure why this works but it fixes the problem */
Avatar
Majkelko
Člen
Avatar
Majkelko:25. listopadu 22:44

Vieš mi vysvetlit prečo tu autory zakazuju pouzivat nextInt() a nextByte()? Načo potom Java má take funkcie? Kedy ich môzem vyuzit bez obáv?

 
Odpovědět 25. listopadu 22:44
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Majkelko
David Jančík:25. listopadu 22:53

Je to zodpovězeno v tomto článku: https://www.itnetwork.cz/…-a-parsovani
Java má obecně spoustu tříd a metod, které dělají na první pohled to samé a někdy se blíží více k tomu, co my potřebujeme, ale ne všechny se běžně používají z mnoha různých důvodů.

Odpovědět 25. listopadu 22:53
Čím více času dostaneš, tím méně ho máš.
Avatar
Majkelko
Člen
Avatar
Majkelko:26. listopadu 9:12

To vysvetlenie tam je nedostatočne, preto som sa to pýtal. No upravil som kod pre tie intervali, vyzera sice divoko ale mne sa zdá že funguje. Tvoje skúsene oko tam asi niečo objaví.

System.out.println("Zadejte levou mez 1. intervalu:");
       int a=Integer.parseInt(sc.nextLine());
       System.out.println("Zadejte pravou mez 1. intervalu:");
       int b=Integer.parseInt(sc.nextLine());
       System.out.println("Zadejte levou mez 2. intervalu:");
       int x=Integer.parseInt(sc.nextLine());
       System.out.println("Zadejte pravou mez 2. intervalu:");
       int y=Integer.parseInt(sc.nextLine());
       System.out.println("Dvojice čísel (1. z prvního intervalu a 2. z druhého intervalu), jejichž součet\n" +
"leží alespoň v jednom z intervalů:");
       for(int i=a;i<=b;i++){
           for(int j=x;j<=y;j++){
               if(i+j>=0){
                    if(b>=y){
                         if((i+j)<=b){
                             System.out.print("["+i+";"+j+"], ");
                         }
                    }else{
                        if((i+j)<=y){
                          System.out.print("["+i+";"+j+"], ");
                         }
                    }
               }else{
                     if(a<=x){
                         if((i+j)>=a){
                             System.out.print("["+i+";"+j+"], ");
                         }
                    }else{
                        if((i+j)>=x){
                          System.out.print("["+i+";"+j+"], ");
                         }
                    }
               }
           }
       }

Skusam rôzne intervali a zdá sa to byť dobre.

 
Odpovědět 26. listopadu 9:12
Avatar
Odpovídá na Majkelko
Matúš Olejník:26. listopadu 10:52

Pre <2, 6> a <-5, -2> máš podľa mňa zlý výstup. Tú podmienku robíš zbytočne komplikovanú ulož si súčet i+j do premennej a tú skontroluj či patrí do prvého intervalu alebo do druhého a ak hej vypíš tú dvojicu.

Odpovědět 26. listopadu 10:52
/* I am not sure why this works but it fixes the problem */
Avatar
Majkelko
Člen
Avatar
Majkelko:26. listopadu 13:55

Prerobil som to na takuto peknu jednoduchu vec a stale to nebere. Ja fakt nevidim čo je zle.

for(int i=a;i<=b;i++){
           for(int j=x;j<=y;j++){
               int v=i+j;
               if((v>=a && v<=b) || (v>=x && v<=y)){
                   System.out.print("["+i+";"+j+"], ");
               }
           }
       }
 
Odpovědět 26. listopadu 13:55
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Majkelko
David Jančík:26. listopadu 14:36

Neposílej prosím kódy které jsou z jiné lekce, než ke které píšeš. V textu nikde není odradkovani. Věty zalamuje samo okno, když jsou moc dlouhé.

Odpovědět 26. listopadu 14:36
Čím více času dostaneš, tím méně ho máš.
Avatar
Majkelko
Člen
Avatar
Majkelko:26. listopadu 18:48

Prepáč to som si neuvedomil, už to neurobim. A tej rade nerozumiem.

 
Odpovědět 26. listopadu 18:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 158. Zobrazit vše