Cvičení 1 - Opakování
Téma 1: Opakování O-notace
Rozhodněte, zda následující vztahy platí nebo ne. Dokažte.
- 20 ⋅ n + 6 ∈ O(n)
- 20 ⋅ n + 6 ∈ Ω(n)
- 20 ⋅ n + 6 ∈ Θ(n)
- Σi = 1, …, n (i) ∈ O(n2)
- n! ∈ O(n)
Téma 2: Opakování C
Následující úkol pokrývá základní znalosti, ktere byste už měli mít z kurzu Jazyka C a Algortimů 1.
- Vytvořte v C strukturu
struct debtor
pro záznam adresáře dlužníků obsahující:- jméno dlužníka,
- příjmení dlužníka,
- věk dlužníka,
- dlužnou částku.
- Vytvořte adresář dlužníků jako pole struktur z předchozího bodu (data si vymyslete; alespoň pět záznamů).
- Napište následující funkce (parametr
n
je vždy velikost pole):- pro přístup k údajům dlužníka (význam je jasný z názvu):
string debtor_name(struct debtor d)
,string debtor_surname(struct debtor d)
,int debtor_age(struct debtor d)
,int debtor_debt(struct debtor d)
;
- vypisující dlužnou částku na standardní výstup pro zadaný adresář, jméno a příjmení dlužníka:
void print_debt(struct debtor debts[], int n, string name, string surname)
- vracející dlužníka s největším dluhem (celou strukturu) v zadaném adresáři:
struct debtor max_debt(struct debtor debts[], int n)
- navyšující dluh zadaného dlužníka o zadanou částku v zadaném adresáři:
void increase_debt(struct debtor debts[], int n, string name, string surname, int amount)
- snižující dluh zadaného dlužníka o zadanou částku v zadaném adresáři:
void decrease_debt(struct debtor debts[], int n, string name, string surname, int amount)
- vracející i-tého nejmladšího dlužníka pro zadané i a zadaný adresář:
struct debtor ith_youngest(struct debtor debts[], int i, int n)
- třídící zadaný adresář vzestupně podle věku dlužníka:
void sort_debts(struct debtor debts[], int n)
- pro přístup k údajům dlužníka (význam je jasný z názvu):
Další informace:
- Chcete-li typ
string
místo pole znaků, jak je použit výše, tak jej musíte definovat pomocí typedef. Pokud to dělat nechcete, klidně místo stringu použijte pole znaků.