NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Řešené úlohy k 1.-5. lekci PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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
Tvůrce
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
Tvůrce
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
Tvůrce
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
16.4.2016 14:07
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 114.