Úlohy na procvičení

Doporučuju zkusit si minimálně úlohy 1, 6 a 11.

U úloh, kde máte naprogramovat funkci pro práci s polem, stačí, když ji naprogramujete pro pole čísel (int[]).

  1. Napište funkci Contains, která dostane pole a prvek a má rozhodnout, jestli prvek v poli je. Zkuste funkci napsat bez použití existujících metod jako Array.IndexOf a podobných.
  2. Napište funkci IndexOf, která dostane pole a prvek a vrací pozici prvku v poli (případně -1, pokud tam není).
  3. Napište funkci, která vytvoří nové pole/list s prvky pouze ze sudých pozic zadaného pole.
  4. Napište funkci, která spočítá prefixové součty pro zadané pole.
  5. Napište funkci, která ověří, že textový řetězec je palindrom (čte se stejně zepředu i zezadu).
  6. Napište funkci, která připojí (concatenate) dvě pole za sebe (tedy vyrobí nové pole, jehož délka je součet délek zadaných polí a prvky jsou nejprve z prvního a pak z druhého pole).
  7. Napište funkci, která udělá merge dvou setřízených polí (tedy v lineárním čase vyrobí setřízené pole s prvky z obou vstupních polí).
  8. Napište funkci, která udělá rotaci pole o k pozic. To znamená, že prvních k prvků se přesune na konec pole. Např. rotace [1,2,3,4,5,6] o 2 je [3,4,5,6,1,2]. Zkuste to bez vytvoření nového pole (tzv. “in place”).
  9. Napište program, který vypíše seznam slov s obdélníkovým rámečkem. Např. pro slova ["Hello", "World", "in", "a", "frame"] máte vypsat
    *********
    * Hello *
    * World *
    * in    *
    * a     *
    * frame *
    *********
  10. Implementujte libovolný sort (např. select, insert, nebo bubble).
  11. Napište program, který provede frekvenční analýzu textu. Program dostane textový řetězec (nemusíte ho číst ze vstupu, stačí si vytvořit proměnnou s nějakým kusem textu) a pro každé unikátní slovo v textu spočítá, kolikrát se dané slovo v textu vyskytuje. Například pro vstup: "Lorem ipsum dolor, ipsum sit." by výstup mohl vypadat takto:
    Lorem: 1
    ipsum: 2
    dolor,: 1
    sit.: 1
    Nápověda: použijte Dictionary. Pro začátek stačí text dělit podle mezer (text.Split()), interpunkci můžete ignorovat (nechat součástí slov jako v příkladu výše). Až to budete mít, můžete se zamyslet, jak se interpunkce zbavit (například vám může pomoct text.Split(' ', ',', '.')).

Učební výstupy

Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.

  • pracovat v C# s textovými řetězci (string)
    • znát základní metody (např. IndexOf, Split)
  • pracovat v C# s poli (Array)
    • projít pole po prvcích
    • zjistit délku pole
    • znát základní metody (např. Array.IndexOf, Array.Sort)
    • umět definovat vícerozměrné pole (např. int[,])
  • použít v C# základní datové struktury, které už znáte z Pythonu
    • List – seznam (list)
    • Dictionary – slovník (dict)
    • Stack – zásobník
    • Queue – fronta