Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Cvičení k 1.-4. lekci PHP

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 PHP 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ů

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Jednoduchý příklad

Vytvořte skript, který si založí proměnné $a a $b. Do těchto proměnných vloží délky stran obdélníka ($a = 10 cm; $b = 20 cm) a potom vypíše jeho obvod a obsah. Pomocí spojování řetězců dosáhněte následujícího výstupu:

Obdélník
localhost

<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta charset="utf-8" />
    <title>Obdélník</title>
</head>
<body>
</body>
</html>

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

Napište skript, který eviduje produkty s následujícími cenami: 3500 Kč, 2800 Kč, 1280 Kč, 1920 Kč, 4320 Kč. Spočítejte odchylku 3. produktu od průměrné ceny. K řešení úlohy využijte pole.

Ukázka obrazovky programu:

Produkty
localhost
<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta charset="utf-8" />
    <title>Produkty</title>
</head>
<body>
</body>
</html>

Pokročilý příklad

V čínské astrologii je každému roku přiřazeno jedno ze zvířecích znamení. Ta jsou: krysa, buvol, tygr, zajíc, drak, had, kůň, ovce, opice, kohout, pes a vepř. Vytvořte skript, který podle roku, uloženého v proměnné $rok, vypíše znamení pro tento rok. Rok 2017 je rok opice, 2018 je tedy kohouta a tak dále. Znamení se cyklí stále dokola, my ovšem ještě neumíme podmínky, tak se musíme spokojit s tím, že naše aplikace bude fungovat jen na 12 let dopředu. Zde přikládám skloněná zvířecí znamení, která použijeme ve výpisu: koně, ovce, opice, kohouta, psa, vepře, krysy, bůvola, tygra, zajíce, draka, hada

Ukázka obrazovky programu:

Zvěrokruh
localhost
<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta charset="utf-8" />
    <title>Zvěrokruh</title>
</head>
<body>
</body>
</html>

 

Stáhnout

Staženo 3036x (2.33 kB)

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
31 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.
Předchozí článek
Textové řetězce podruhé a pole v PHP
Všechny články v sekci
Základní konstrukce jazyka PHP
Miniatura
Následující článek
Asociativní pole v PHP a obsluha formulářů
Aktivity (10)

 

 

Komentáře

Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:13.8.2014 11:56

Jen si rýpnu k prvnímu příkladu - není náhodou obsah v centimetrech čtverečních? :P :) I to se mi podařilo tam vložit bez nápovědy! :D

 
Odpovědět 13.8.2014 11:56
Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:13.8.2014 16:48

Znovu budu mít asi hloupý dotaz, ale s tím odečítáním od roků/měsíců mám pořád problém. U měsíce už jsem to pochopil, že se odečítá -1 od proměnné měsíc, aby se dostal ten měsíc z pole, kde už to je o jedna dolů posunutý (leden není 1. měsíc ale nultý). Proč ale:

$aktualniZnameni = $znameni[$rok -2014];

..odečítám od roku číslo 2014? To budu muset příští rok změnit na 2015, aby to fungovalo? Nechápu tady tu podstatu odečítání, vždyť z fce date('Y') je jasný, co je za rok, ne?

 
Odpovědět 13.8.2014 16:48
Avatar
Odpovídá na Michal Kuba
Michal Žůrek - misaz:13.8.2014 17:00

nebudeš to měnit, pole nemá 2014, 2015, 2016 indexů, ty víš, že 2014 = 0, proto odečteš aby jsi ten index dostal na nulu. Měnit budeš muset až v roce 2026 kdy se dostaneš na index, který není v poli.

 
Odpovědět 13.8.2014 17:00
Avatar
blend.miro
Člen
Avatar
Odpovídá na Michal Kuba
blend.miro:28.8.2014 21:54
$znamenia = array('krysa','buvol','tygr','zajíc','drak','had','kon','koza','ovca','opica','kohut','pes','prasa');
$mesiac = date('m');
 $aktualneZnamenie = $znamenia[$mesiac-1];

Je to to isté, stále sa jedná len o "index" toho pola, takže znovu len odpočítaš "-1" jedno dozadu, aby si sa z 9 mesiaca dostal na 8, kedže je August.

Editováno 28.8.2014 21:55
 
Odpovědět 28.8.2014 21:54
Avatar
PiskotPiskotovic
Redaktor
Avatar
PiskotPiskotovic:24.11.2014 19:06

Super, netušil jsem že PHP je tak lehké :D

Odpovědět  +1 24.11.2014 19:06
Error 404 - stránka motto.php nenalezena.
Avatar
Odpovídá na PiskotPiskotovic
Neaktivní uživatel:24.11.2014 19:19

Základy ano, pokročilejší věci jsou těžké a ještě poměrně zdlouhavé (oproti ASP)

Odpovědět 24.11.2014 19:19
Neaktivní uživatelský účet
Avatar
Odpovídá na PiskotPiskotovic
Martin Konečný (pavelco1998):24.11.2014 19:21

PHP je dost ohleduplný jazyk. Syntaxe je poměrně jednoduchá, ale zase se v něm dá udělat spousta chyb, kterých si těžko všimneš.

Odpovědět 24.11.2014 19:21
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Neaktivní uživatel
David Čápka:24.11.2014 19:31

Srovnávat jazyk a framework je trochu mimo :)

Odpovědět 24.11.2014 19:31
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Neaktivní uživatel:24.11.2014 19:41

Pokud se bavíme o čistém ASP?

// Dobře, není to to samé, ale stejně, poina je jinde

Editováno 24.11.2014 19:44
Odpovědět 24.11.2014 19:41
Neaktivní uživatelský účet
Avatar
Ondřej Máca:19.6.2015 9:32

U toho pokročilého příkladu není vůbec potřeba použít podmínky. Vlastně mě ani nenapadá jak bych je tam elegantně využil. Lze to ale udělat pomocí operátoru pro modulo a bude to fungovat na tisíce let dopředu i dozadu :)

$znameni = array("kozy", "ovce", "opice", "kohouta", "psa", "vepře", "krysy", "bůvola", "tygra", "zajíce",
                              "draka", "hada", "koně");
$index = date("Y") % 13;
echo("Je rok $znameni[$index]");
Editováno 19.6.2015 9:35
 
Odpovědět  +1 19.6.2015 9:32
Avatar
Brokada
Člen
Avatar
Brokada:30.12.2015 21:26

První dva v pohodě, poslední jsem fakt nedal. No, snad v podobném případě se poučím a chybu už neudělám a zvládnu to. ;)

 
Odpovědět 30.12.2015 21:26
Avatar
Rasťo Suchovský:23.1.2016 11:11

Nie som znalec čínskeho zverokruhu, ale zasa viem, že má 12 znamení. Tu je uvedených 13. Vygooglil som, a zistil, že ovca tam nepatrí. Resp. ovca a koza sú to isté znamenie, ale väčšinou sa uvádza koza.

Práve idem tú úlohu, teda cvičenie 3 riešiť. Nemôžem si pomôcť, ale myslím si, že to dám aj bez podmienky a kód dá odpoveď na roky od 1 do 1 000 000. :)
Tak mi držte palce.
Ale asi to bez googlu nepôjde, lebo budem potrebovať zaokrúhľovanie, resp. ešte lepšia by bola operácia modulo... ;)
Ešte by to šlo aj tak, keby som mohol výsledok delenia uložiť do premennej, ktorá vie ukladať len celé čísla, ale to tiež neviem.
Keď niečo zo mňa vyjde, určite sa s kódom podelím. :)
Ale až večer sa na to pozriem. :)
So znalosťami, ktoré som dosiahol v tomto kurze by som to asi nedal.

 
Odpovědět 23.1.2016 11:11
Avatar
Rasťo Suchovský:24.1.2016 5:36

Včera som bol už zabitý, takže teraz aj bez googlu (veď modulo je aj na kalkulačke '%'):

<?php
        $zvieracieZnamenia = Array("opica", "kohút", "pes", "prasa", "potkan",
            "byvol", "tiger", "zajac", "drak", "had", "kôň", "koza");
        $rok = 2015;
        $znamenie = $rok % 12;
        $znamenie = $zvieracieZnamenia[$znamenie];
        echo("Roku $rok prislúcha znamenie $znamenie podľa čínskeho zverokruhu.");
        ?>

Keďže opica vychádza na rok 0 (matematicky) a modulo dá zvyšok po delení, výsledok operácie modulo je aj indexom príslušného znamenia v poli $zvieracieznamenia.

 
Odpovědět 24.1.2016 5:36
Avatar
JohnLuther
Člen
Avatar
JohnLuther:20.2.2016 13:19

Teda čo sa týka toho 3 príkladu tak ani ten, čo je od autora na stiahnutie nefunguje...

 
Odpovědět 20.2.2016 13:19
Avatar
Neaktivní uživatel:16.4.2016 11:59

Dobrý den,

kde jsem udělal chybu?

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        $cinske_znameni_roku = array('krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza', 'opice', 'kohout', 'pes', 'vepř');
        $rok = date('Y');
        $aktualni_cinske_znameni = $cinske_znameni_roku[$rok - 2016];
        echo("Dnešní rok je ve znamení $aktualni_cinske_znameni.");
        ?>
    </body>
</html>
Odpovědět 16.4.2016 11:59
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
mayo505:16.4.2016 12:11

Ahoj, mohol by si napísať čo je vôbec tá chyba. Nejaká chybová hláška, alebo zlý výsledok?

Ak je zlý výsledok tak máš podľa mňa zle usporiadané pole $cinske_zname­ni_roku. Prvý prvok v tom poli podľa tvojho programu by mal reprezentovať rok 2016. Podľa zadania by to ale mala byť ovca a nie krysa.

 
Odpovědět 16.4.2016 12:11
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 13:10

Chyba je v tom, že se mi ukazuje znamení „krysa“.

Podle zadání, které jsem našel na internetu, by to měla být opice.
Krysa 1900, 1912, 1924, 1936, 1948, 1960, 1972, 1984, 1996, 2008, 2020, 2032, 2044, 2056, 2068, ...
Buvol 1901, 1913, 1925, 1937, 1949, 1961, 1973, 1985, 1997, 2009, 2021, 2033, 2045, 2057, 2069, ...
Tygr 1902, 1914, 1926, 1938, 1950, 1962, 1974, 1986, 1998, 2010, 2022, 2034, 2046, 2058, 2070, ...
Zajíc 1903, 1915, 1927, 1939, 1951, 1963, 1975, 1987, 1999, 2011, 2023, 2035, 2047, 2059, 2071, ...
Drak 1904, 1016, 1928, 1940, 1952, 1964, 1976, 1988, 2000, 2012, 2024, 2036, 2048, 2060, 2072, ...
Had 1905, 1917, 1929, 1941, 1953, 1965, 1977, 1989, 2001, 2013, 2025, 2037, 2049, 2061, 2073, ...
Kůň 1906, 1918, 1930, 1942, 1954, 1966, 1978, 1990, 2002, 2014, 2026, 2038, 2050, 2062, 2074, ...
Koza 1907, 1919, 1931, 1943, 1955, 1967, 1979, 1991, 2003, 2015, 2027, 2039, 2051, 2063, 2075, ...
Opice 1908, 1920, 1932, 1944, 1956, 1968, 1980, 1992, 2004, 2016, 2028, 2040, 2052, 2064, 2076, ...
Kohout 1909, 1921, 1933, 1945, 1957, 1969, 1981, 1993, 2005, 2017, 2029, 2041, 2053, 2065, 2077, ...
Pes 1910, 1922, 1934, 1946, 1958, 1970, 1982, 1994, 2006, 2018, 2030, 2042, 2054, 2066, 2078, ...
Vepř 1911, 1923, 1935, 1947, 1959, 1971, 1983, 1995, 2007, 2019, 2031, 2043, 2055, 2067, 2079, ...

Dobře, tedy takhle.

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        $cinske_znameni_roku = array('opice', 'kohout', 'pes', 'vepř', 'krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza');
        $rok = date('Y');
        $aktualni_cinske_znameni = $cinske_znameni_roku[$rok - 2016];
        echo("Dnešní rok je ve znamení $aktualni_cinske_znameni.");
        ?>
    </body>
</html>

Ale neukazuje to opici jenom kvůli tomu, že je první v seznamu?

Editováno 16.4.2016 13:12
Odpovědět 16.4.2016 13:10
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
mayo505:16.4.2016 13:34

samozrejme, že ju zobrazuje iba preto, že je prvá v zozname :D Ale aj tá chyba bola práve preto, že krysa bola prvá v zozname. Keď to chceš urobiť pomocou toho zoznamu tak oveľa lepšie sa to ani nedá. Chytrejšie by sa to dalo vyriešiť napríklad s operátorom modulo a to tak, že by si opäť inak usporiadal ten zoznam (a to tak aby začínal znamením, ktoré bolo v roku 0) a v kóde mal

$pocet_znameni = 12;
$aktualni_cinske_znameni = $cinske_znameni_roku[$rok % $pocet_znameni];

A tento kód by ti podporoval aj iné roky, nie len roky 2016-2028

 
Odpovědět 16.4.2016 13:34
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 13:44

Opět se mi zobrazuje první znamení, kde dělám chybu?

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        $cinske_znameni_roku = array('drak', 'had', 'kůň', 'koza', 'opice', 'kohout', 'pes', 'vepř', 'krysa', 'buvol', 'tygr', 'zajíc');
        $rok = date('Y');
        $pocet_znameni = 12;
        $aktualni_cinske_znameni = $cinske_znameni_roku[$rok % $pocet_znameni];
        echo("Dnešní rok je ve znamení $aktualni_cinske_znameni.");
        ?>
    </body>
</html>
Odpovědět 16.4.2016 13:44
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
mayo505:16.4.2016 14:07

Lebo 2016 % 12 = 0 ... preto zobrazuje prvý záznam.
Chyba je v tom, že Drak je v roku 2000 a nie v roku 0 (doslova rok nula). Akurát to tak vyšlo, že v roku nula je opica, takže by to poradie malo byť tak ako si ho písal predtým (opica na začiatku).

Je viacej spôsobov ako to urobiť, podstatné je aby si si uvedomil, prečo a ako ktoré veci fungujú.

Opět se mi zobrazuje první znamení, kde dělám chybu?

Napríklad na túto otázku by si si mal vedieť odpovedať aj sám, keď vieš, že $rok = 2016, $pocet_znameni = 12 a teda $rok % $pocet_znameni = 0 a teda chcem prvý prvok

 
Odpovědět  +1 16.4.2016 14:07
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 14:48

Stále tomu moc nerozumím.

<?php
$cinske_znameni_roku = array('opice', 'kohout', 'pes', 'vepř', 'krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza');
$rok = date('Y');
$pocet_znameni = 12;
$aktualni_cinske_znameni = $cinske_znameni_roku[$rok % $pocet_znameni];
echo("Dnešní rok je ve znamení $aktualni_cinske_znameni.");
?>

date('Y') se řídí podle čeho?
A co znamená to procento?

Editováno 16.4.2016 14:49
Odpovědět 16.4.2016 14:48
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
mayo505:16.4.2016 15:08

Prepáč, že ti odpoviem takto, ale ako vraví staré čínske príslove: Dáš človeku rybu nakŕmiš ho na deň, naučíš ho loviť ryby a dáš mu potravu na celý život, naučíš ho používať google a nemusíš ho učiť loviť ryby :D

http://lmgtfy.com/?…
http://lmgtfy.com/?…

Proste nedá sa učiť tak, že niečo neviem a idem sa hneď niekoho pýtať. Hneď tvoja prvá otázka plynula z toho, že si nevedel čo robí ten kód. Ak by si si vyhľadal čo ako funguje, ako napríklad funguje funkcia date, tak by ti bolo jasné prečo to máš chybne.

 
Odpovědět  +2 16.4.2016 15:08
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 15:23

Jasně chápu.

Takže pokud je x % y:

  • x < y, výsledek bude vždy x.
  • x > y a dělí se na celé číslo, výsledek bude vždy nula.
  • x > y a dělí se na desetinné číslo, výsledek bude vždy poslední zbytek.

Říkám to dobře?

Odpovědět 16.4.2016 15:23
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
mayo505:16.4.2016 15:27

áno, ale zapísal si to dosť zložite. Je to proste zvyšok po celočíselnom delení, to sa učí hádam už na základnej škole.

 
Odpovědět  +2 16.4.2016 15:27
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 17:08

Hádáš dobře, samozřejmě.

Pokud bych tedy chtěl zjistit znamení roku 2017.
Tak je to 2017 % 12 se zbytkem 40 a perioda.
Pokud dobře počítám, vychází mi krysa, jak to?

OPICE 0 12 24 36
KOHOUT 1 13 25 37
PES 2 14 26 38
VEPŘ 3 15 27 39
KRYSA 4 16 28 40
BUVOL 5 17 29
TYGR 6 18 30
ZAJÍC 7 19 31
DRAK 8 20 32
HAD 9 21 33
KŮŇ 10 22 34
KOZA 11 23 35

Krysa bude až v roce 2020.

První jsem počítal opici jako jedna, jenže pokud počítám jako zbytek, tak musím začít s nulou.
Kdybych počítal s jedničkou, vyjde mi vepř.

Odpovědět 16.4.2016 17:08
Neaktivní uživatelský účet
Avatar
mayo505
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
mayo505:16.4.2016 17:28

Tak je to 2017 % 12 se zbytkem 40 a perioda.

Toto mi nedáva žiaden zmysel. Ak robíš X % Y, tak výsledok nemôže byť väčší než Y - 1. Takže zvyšky po delení 12 môžu byť len 0-11.
Konkrétne 2017 % 12 = 1 ... pretože 2017 = 12 * 168 + 1

 
Odpovědět  +1 16.4.2016 17:28
Avatar
Odpovídá na mayo505
Neaktivní uživatel:16.4.2016 17:30

Ach, takhle, dělal jsem zbytek jinak.

Děkuji mnohokrát za vysvětlení.

Editováno 16.4.2016 17:31
Odpovědět  +1 16.4.2016 17:30
Neaktivní uživatelský účet
Avatar
Jenda Xenofob Kropáč:19.4.2016 20:44

Hezký den, přikládám řešení třetí úlohy.

připadá mi natolik jednoduché, že někde musí být chyba... :D , přestože funguje... :D

Budete-li mít chuť a čas se nad tím kdokoliv pozastavit, uvítám každý poznatek.. Díky :) (Zdroják je v přioženém obrázku)

 
Odpovědět  -1 19.4.2016 20:44
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Jenda Xenofob Kropáč
David Hynek:19.4.2016 23:34

Program by měl fungovat bez pravidelného zásahu programátora. Každý rok tedy podle tvého řešení, musíš upravit rok0 a jednou za 12 let pak i rok1? To jsi mohl rovnou napsat

echo "Dnešní rok je ve znamení koně;

a každý rok to znamení přepsat, bylo by to ještě jednodušší :)

Odpovědět  +1 19.4.2016 23:34
Čím víc vím, tím víc věcí nevím.
Avatar
Martin Bušek:5.2.2017 11:52

Zajímá mě proč tvůj výsledek u cvičení produkty.php je 1484?
Pokud to napíši po svém

$cena =  array ('1' => 3500,
                '2' => 2800,
                '3' => 1280,
                '4' => 1920,
                '5' => 4300,
                 ) ;
$prumer = array_sum($cena) / count($cena);
$rozdil = $prumer - $cena[3];

echo('Třetí produkt se od průměrné ceny odlišuje o ' . $rozdil . ' Kč.');
?>

Vyjde mi výsledek 1480, což si myslím že je dobře. Stejný výsledek mi vrátila i kalkulačka když jsem to počítal zpětně.

Jelikož se moje a tvoje řešení diametrálně neliší, zajímá mě proč ti ve výsledku vychází o 4 více než mě.

Editováno 5.2.2017 11:54
 
Odpovědět 5.2.2017 11:52
Avatar
Martin Bušek:5.2.2017 12:12

Čau, u příkladu znamení.php jsem došel na obdobné řešení jako ty.
Spíš mě napadlo co je z 2 ukázek praktičtější?

$mesice = array(*vypsané mesíce*);
$rok = date('Y');
$rok_slovem = $mesice[$rok-($rok-1)];
echo('Rok '. $rok . ', je rokem ' . $rok_slovem . '.');

Nebo

$mesice = array(*vypsané mesíce*);
$rok = date('Y');
$rok_slovem = $rok - ($rok-1);
echo('Rok '. $rok . ', je rokem ' . $mesice[$rok_slovem] . '.');

Má ten postup výpočtu nějakou analogii nebo je to ve výsledku jedno jak si to udělám?

 
Odpovědět 5.2.2017 12:12
Avatar
Odpovídá na Martin Bušek
Tomáš Valenta:17.2.2017 22:16

Máš chybu pouze v zápisu pole. Poslední index je číslo 4320 a ne 4300, potom to budeš mít stejné :)

 
Odpovědět 17.2.2017 22:16
Avatar
Tran Viet Anh:22.2.2017 20:38

Jenom technicka – v prikladu s cinskym kalendarem je zbytecna ovce/koza. Staci jenom jedna z nich, jinak je tech zvirat 13 a ne 12 ;)

Odpovědět  +1 22.2.2017 20:38
Mít jednou hloupou otázku je lepší než být hloupý napořád.
Avatar
Tomáš Střecha:4.3.2017 14:04

Ahoj,

nemáš tam chybu? :) V článku máš napsáno "Ta jsou: krysa, buvol, tygr, zajíc, drak, had, kůň, koza, ovce, opice, kohout, pes a vepř." a v řešení je "$znameni = array('koně', 'kozy', 'ovce', 'opice', 'kohouta', 'psa', 'vepře',
'krysy', 'bůvola', 'tygra', 'zajíce', 'draka', 'hada');" Máš buď v řešení nebo v zadání špatně zapsány "zvířata". :) David Čápka Omlouvám se, pokud se pletu ;)

 
Odpovědět 4.3.2017 14:04
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Martin Bušek
Michal Martinec:10.3.2017 21:01

Mas chybu uplne niekde inde. V zadani sa pise, ze spocitaj odchylku 3. produktu. 3. produkt ma ale index [2] a nie [3], ako to mas ty. Zacinas pocitat vzdy od [0] a nie od [1]. - ok nic uz som si vsimol tvoj kod. Nic som nepovedal... :)

Editováno 10.3.2017 21:03
Odpovědět 10.3.2017 21:01
Neporovnavaj sa s ostatnymi. Porovnavaj sa sam so sebou.
Avatar
Odpovídá na Tomáš Střecha
Martin Mannsbarth:31.5.2017 23:52

2017 je rok kohouta :-) protože rok ovce tak nějak neexistuje, takže máš pravdu,
"$znameni = array('koně', 'kozy', 'ovce', 'opice', 'kohouta', 'psa', 'vepře',
'krysy', 'bůvola', 'tygra', 'zajíce', 'draka', 'hada'); je 13 znamení. :-P

 
Odpovědět 31.5.2017 23:52
Avatar
Martin Bubník:21.6.2017 15:51

Cvičení byly celkem jednoduché, až na to třetí, takže pokročilé.. Zdálo se mi to těžké, pořád jsem měl v hlavě abych to nějak udělal přes foreach a při tom to bylo tak jednoduché

 
Odpovědět 21.6.2017 15:51
Avatar
Jindřich Volf:31.1.2018 13:06

Poslední cvičení mi dalo zabrat jen proto, že sem zapomněl date do :
$rok = date('Y'); napsal jsem jen $rok = ('Y');
Na začátečníka bych řek dobrý. :)

 
Odpovědět 31.1.2018 13:06
Avatar
Richard Okoličany:1.2.2018 19:15

<?php
$znameniaCinske= array("Potkan","By­vol","Tiger","Za­jac","Drak","Had","Kôň",­"Koza",
"Opica","Kohút","Pes","­Prasa");

$datum = date('Y'); //zisti akutalny rok
$znamenie = $znameniaCinske[$da­tum - 2008]; // vypočíta znamenie s polia

echo("je rok $znamenie"); //vypíše text

?>

keďže cyklus sa opakuje každý 12 rok od roku 1900... Takže ďalší cyklus bude v roku 2020. Takže cyklus pre náš Činský horoskop je 2008 "aktuálny rok - 2008"

 
Odpovědět 1.2.2018 19:15
Avatar
Richard Okoličany:1.2.2018 19:22

Ešte dodám podľa mňa, keď sa nemýlim je v lekcií zle napísaný kód. Nedá Vám skutočnú hodnotu, ale blud. $znameni[$rok - 2014]; ma byť $znameni[$rok - 2008];

 
Odpovědět 1.2.2018 19:22
Avatar
Radek Dřímal:4.2.2018 14:48

Záleží jak si poskládáš jednotlivé znamení do pole , kterým znamením začneš. Psalo se , že lonšký rok je rok opice. Tím pádem může být první opice , a odčítat se bude rok 2017.

 
Odpovědět  +1 4.2.2018 14:48
Avatar
Radek Kopřiva:28.3.2018 20:46

Ahoj, myslím, že první příklad by měl mít správné jednotky - Obdélník se stranami o délkách 10 cm a 20 cm má obsah 200 cm2 a obvod 60 cm. ...dvojka ve formátu horní index.....jinak děkuji. Skvělá jasný manuál.
.

 
Odpovědět 28.3.2018 20:46
Avatar
Kačka
Člen
Avatar
Kačka:17.6.2018 15:21

Ahoj,
můžeme zjišťovat jakýkoli rok i bez cyklů, stačí zjistit celočíselný zbytek po dělení 12 a správně seřadit zvířata v poli. A technicky je rok 2018 spíše rokem psa. Rok kohouta byl od 28.1. 2017 do 15.2. 2018. :)
Jinak díky za perfektní stručný a jasný popis.
K.

 
Odpovědět 17.6.2018 15:21
Avatar
Milan Hrňa
Člen
Avatar
Milan Hrňa:26.6.2018 10:49

Ahoj,
nemyslím si, že v tomto příkladu jde o řešení nějakého skutečného horoskopu s přesným znamením v této době, ale pouze o práci s číselnými poli a jejich zápisy pro zapamatování + nějaké to log. myšlení. :-)

Aby byly splněny podmínky zadání stačí pak velmi jednoduše:

<?php

$znameni = array('kohouta','psa','v­epře','krysy','bů­vola','tygra','za­jíce',
'draka','hada','ko­ně','kozy','ov­ce','opice');

$rok = date('y');
$rok = $rok -18;

echo("Je rok $znameni[$rok]");

?>

 
Odpovědět 26.6.2018 10:49
Avatar
Jaroslav Nahodil:2.8.2018 23:36

Kdyby někoho zajímalo řešení s cyklem a podmínkami :-)

<?php
$znameni = ['krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza', 'ovce',
            'opice', 'kohout', 'pes', 'vepř'];


$zadanyRok = 2018;

for ($rok = 2008, $i = 0; $i <= 13; $rok++, $i++) {

    if ($i == 13) {
        $i = 0;
    }

    if ($zadanyRok == $rok) {
        $text = 'Rok ' . $rok . ' znamení: ' . $znameni[$i];
        break;
    }
}

echo $text;
 
Odpovědět 2.8.2018 23:36
Avatar
Jaroslav Patrný:10.9.2018 1:50

Ve výstupu 1. příkladu je chyba Obdélník se stranami o délkách 10 cm a 20 cm má obsah 200 cm a obvod 60 cm., nastavena je i v otestování - se správným výstupem** 200 cm2** neprojde.

 
Odpovědět 10.9.2018 1:50
Avatar
Jaroslav Patrný:10.9.2018 2:10

Ve výstupu 1. příkladu je chyba:

Obdélník se stranami o délkách 10 cm a 20 cm má obsah 200 cm a obvod 60 cm.,

nastavena je i v otestování - se správným výstupem 200 cm2 neprojde.

 
Odpovědět 10.9.2018 2:10
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Jaroslav Patrný
David Jančík:11.9.2018 10:30

Ahoj, díky za report, příklad byl opraven :)

Odpovědět  +1 11.9.2018 10:30
Zapomeň, že je to nemožné a udělej to ;)
Avatar
gullyCZ
Člen
Avatar
gullyCZ:12.9.2018 14:47

Ta kontrola by mohla být chytřejší. Nemyslím, že by toto řešení bylo špatně:

<!DOCTYPE html>
<html lang="cs-cz">
<head>
    <meta charset="utf-8" />
    <title>Zvěrokruh</title>
</head>
<body>
<?php
$znameni = array('krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza', 'ovce', 'opice', 'kohout', 'pes', 'vepř');
$rok0= 2008;
$aktualni_rok = date('Y');
$aktualni_znameni = $aktualni_rok - $rok0;
echo 'Je rok '.$znameni[$aktualni_znameni];
?>
</body>
</html>
 
Odpovědět 12.9.2018 14:47
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na gullyCZ
David Jančík:12.9.2018 15:04

Ahoj, je nutné dodržet stejné formátování. Slova nemáš skloněná, správně bys měl v poli mít 'koně', 'kozy', 'ovce', 'opice', 'kohouta', 'psa', 'vepře', 'krysy', 'bůvola', 'tygra', 'zajíce', 'draka', 'hada'.
Do článku to doplním, díky za report.

Odpovědět  +1 12.9.2018 15:04
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Odpovídá na David Jančík
Jaroslav Patrný:29.10.2018 2:01

Ahoj, procházím zpětné starší cvičení a přišel jsem na chybu. Těch znamení je pouze 12 (nikoli 13),** 'kozy'** a 'ovce' je jedno a to samé znamení. Pak by pokud zadáš na nultém indexu znamení pro rok 2007 až 2014 vyšlo pro rok 2018 chybně 'kohouta' místo 'psa'.

Editováno 29.10.2018 2:03
 
Odpovědět 29.10.2018 2:01
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Jaroslav Patrný
David Jančík:29.10.2018 3:23

Díky za feedback, opraveno :)

Odpovědět 29.10.2018 3:23
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Roman Havelka:3.11.2018 16:52

Nejak to nefunguje ? Muj vystup neprosel. Zkopirovany vystup :
Obdélník se stranami o délkách 10 cm a 20 cm má obsah 200 cm² a obvod 60 cm.
Prvne jsem pridal diakritiku, pak odebral promenne pro vypocet a vypocty vlozil do textu, a ted uz fakt nevim. Nechce se mi stahovat vysledky.To je pak k nicemu.

 
Odpovědět 3.11.2018 16:52
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Roman Havelka
David Čápka:3.11.2018 16:55

A dal jsi to ^2 jako <sup> ?

Odpovědět 3.11.2018 16:55
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Roman Havelka:3.11.2018 17:02

Aha ja to vlozil do textu. diky!

 
Odpovědět 3.11.2018 17:02
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Roman Havelka
David Čápka:3.11.2018 17:03

Na PHP cvičeních teprve makáme, je tam komplikovaná komunikace kvůli tomu, že je to webové, takže se takovéhle věci ještě upřesní. Většina PHP cvičení v současné době ještě není aktivních.

Odpovědět 3.11.2018 17:03
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Martin Štěrba:30.11.2018 19:38
<?php

$datum = date("Y");

$rok = array("2018" => 'krysa', "2019" => 'buvol', "2020" => 'tygr', "2021" => 'zajíc', "2022" => 'drak', "2023" => 'had', "2024" => 'kůň', "2025" => 'koza', "2026" => 'ovce', "2027" => 'opice', "2028" => 'kohout', "2029" => 'pes', "2030" => 'vepř');

echo "Je rok $rok[$datum]";

?>

Je řešení správné?

Editováno 30.11.2018 19:39
 
Odpovědět 30.11.2018 19:38
Avatar
Pedro
Člen
Avatar
Odpovídá na Martin Štěrba
Pedro:2.12.2018 14:06

Je :) až se ti někdy později bude chtít, zkus to zpětně udělat s podmínkou a upravit to pole tak aby se to umělo cyklit -> nekončilo to v 2030. Takovej challenge navíc :D

Ať se daří s php :)

 
Odpovědět 2.12.2018 14:06
Avatar
Odpovídá na David Čápka
Jaroslav Patrný:3.12.2018 21:12

Tyto by už ale měly chodit, pokud řešitel dodrží zadání. ;-)

 
Odpovědět 3.12.2018 21:12
Avatar
David Javůrek:17. ledna 12:36

Pořád mi nechtěl projít testem první lehký příklad, ale našel jsem to. Já jsem jednotky napsal jak cm&sup2, ale aby to prošlo, musí být cm2.

Odpovědět 17. ledna 12:36
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
Filip Horáček:17. ledna 16:52

Ahoj,

já to vymyslel takhle:

<?php
$kalendar=arra­y('pes', 'vepř', 'krysa', 'buvol', 'tygr', 'zajíc', 'drak', 'had', 'kůň', 'koza', 'ovce', 'opice', 'kohout');

$aktualni_rok=da­te('Y');

// $aktualni_rok=2008;

$prepocet=$ak­tualni_rok / 12 ;
$pomoc=(int) $prepocet;
$nulty_rok=$pomoc * 12;
$zaver=$aktual­ni_rok - $nulty_rok;
echo('Je rok ' . $kalendar[$zaver]);

// echo('
');
// echo($nulty_rok);
// echo('
');
// echo($pomoc);
// echo('
');
// echo($zaver);

?>

"Zaremovaný" řádky jsem tam nechal pro přehled jak jsem postupoval.

 
Odpovědět  +1 17. ledna 16:52
Avatar
Niesomtu Hraskova:14. února 2:26

Do kelu musim zapnut nb na to cez tablet to nefunguje cudne to reaguje ked chcem pisat medzi php znacky, miesto medzery mi to naopak maze znak a podobne :)

Odpovědět 14. února 2:26
Víte, jaké adresy jsou nejvíce zadávány v prohlížeči MS Internet Explorer? https://www.mozilla.com/firefox/ https://w...
Avatar
Petr Zajac
Člen
Avatar
Odpovídá na David Čápka
Petr Zajac:14. února 10:15

Nechci vypadat jako "kverulant", ale poslední cvičení na výpočet čínského roku je pro začátečníky celkem velký oříšek, protože "Datum čínského nového roku je pohyblivé a kolísá mezi 21. lednem a 20. únorem. Je určeno astronomicky – nový rok nastává s druhým novým měsícem po zimním slunovratu (třetím, obsahuje-li končící rok vložený třináctý měsíc). "
Chápu, že pro dané cvičení se to má brát zjednodušeně, ale zajímalo by mě jak by se to dalo vypočítat se zadáním celého datumu opravdu "PŘESNĚ" :-O

 
Odpovědět  +1 14. února 10:15
Avatar
Petr Zajac
Člen
Avatar
Odpovídá na Filip Horáček
Petr Zajac:14. února 11:20

<?php
$rok=date('Y');
/* rok 1900 je rok krysy následuje bůvol, tygr, zajíc, drak,
had, kůň, koza (ovce), opice, kohout, pes, vepř /
$znameni= array("krysy", "bůvola", "tygra", "zajíce", "draka", "hada","koně", "ovce", "opice", "kohouta", "psa", "vepře");
$vypocet= $znameni[(($rok - 1900)%12)] ;
/
symbol "%" vrací celočiselný zbytek po celočíselném dělení */
echo("Rok $rok je rokem $vypocet." );
?>
Výpočet je trochu oproti tobě jiný v tom, že jsem začal od roku 1900 a využívám % na vrácení zbytku po dělení a nepoužívám pomocné proměnné :-)

 
Odpovědět 14. února 11:20
Avatar
Michal H.
Člen
Avatar
Michal H.:2. března 7:50

Ahoj, cvičení jsou super. Díky za ně.

Když jsem koukal na řešitele úloh, tak se v porovnání s první a druhou úlohou nemůžu zbavit dojmu, že nejsem sám kdo zapomněl na tu tečku na konci věty :D

Editováno 2. března 7:51
 
Odpovědět 2. března 7:50
Avatar
Lenka Mackova:11. dubna 13:16

Tak to nejtezsi cviceni jsem zvladla, ale az pote, co jsem si nastudovala dalsi lekci a to Asociativni pole.

 
Odpovědět 11. dubna 13:16
Avatar
Otakar Vich
Člen
Avatar
Otakar Vich:25. dubna 23:35

Zkusil jsem postupovat takto:
$znamení = array('koně', 'ovce', 'opice', 'kohouta', 'psa', 'vepře', 'krysy', 'bůvola', 'tygra', 'zajíce', 'draka', 'hada');
$rok = date('Y');
$znameniSlovy = $znamení[$rok - 2015];
echo("Je rok $rok, rok $znameniSlovy.");

 
Odpovědět 25. dubna 23:35
Avatar
Dalibor Pašek:11. září 19:15

První dvě cvičení jsou v pohodě ale na poslední jsem potřeboval znát Asociativní pole, aby mi výsledek třetího zadaní dával smysl.

Pak jsem to spráskal takto:

<?php

$cinskeroky = array(

'2015' => 'koně',
'2016' => 'ovce',
'2017' => 'opice',
'2018' => 'kohouta',
'2019' => 'psa',
'2020' => 'vepře',
'2021' => 'krysy',
'2022' => 'bůvola',
'2023' => 'tygra',
'2024' => 'zajíce',
'2025' => 'draka',
'2026' => 'hada',

);

$rok = date('Y'); // Zjistí rok

$ciskerokyslovy = $cinskeroky[$rok];

echo( 'Je tok ' . $ciskerokyslovy . '.' );

?>

 
Odpovědět 11. září 19:15
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 68 zpráv z 68.