Algoritmy I Cvičení č. 5
Cíl hodiny Procvičení Práce s více rozměrnými poli Práce s polem Práce s vnořenými cykly Příprava na real time test Práce s více rozměrnými poli
Úloha č.1 Vytvořte statické pole reálných čísel o velikosti N a naplňte ho hodnotami. A.) Na obrazovku vypište součet všech prvků v poli. B.) Součin všech prvků v poli. C.) Průměrnou hodnotu všech prvků v poli. D.) Druhé mocniny všech prvků v poli. E.) Součet druhých mocnin všech prvků v poli. F.) Součin třetích mocnin všech prvků v poli.
Úloha č.2 Vytvořte jednoduchou kalkulačku. Program se v nekonečné smyčce bude ptát: - Zadej operaci: - Zadej 1. cislo: - Zadej 2. cislo: Dále program vypíše výsledek operace a zeptá se, jestli má pokračovat (např. Pokracovat Ano/Ne a po stisku klavesy N se program ukončí). Operace, která se s čísly bude provádět, bude zadávána pomocí znaků ‘+’ ‘-’ ‘*’ ‘/’. U dělení nezapomeňte zkontrolovat dělení nulou. Pro všechny čtyři operace udělejte funkce.
Úloha č.3 Vytvořte pěti prvkové pole a naplňte ho v cyklu hodnotami od 1 až 5. A.) Pomocí pole definovaného výše vypočtěte faktoriál čísla 5. (Nápověda: je to samé jako násobení všech prvků v poli) B.) Najděte a vypište největší prvek v poli. C.) Najděte a vypište druhý největší prvek v poli. D.) Vypočtěte a vypište faktoriál všech čísel v poli.
Úloha č.4 Vytvořte dvě pole čísel o velikosti N. Tato pole budou představovat vektory. A.) Vypište obě pole (vektory), každé na jeden řádek. B.) Vypište součet těchto dvou vektorů. (Nápověda: Součet dvou vektorů znamená součet jejich prvků na odpovídajícím indexu. Výsledek je opět vektor) C.) Vypište jejich skalární součin. Nápověda: Mějme dva trojrozměrné vektory a = (1,2,3), b = (4,5,6). Potom jejich skalární součin je 1.4 + 2.5 + 3.6 = 32
Úloha č.5 Vytvořte pěti prvkové celočíselné pole, které naplníte různými čísly. Program vypíše na obrazovku vždy index prvku v poli. Pokud bude číslo v poli kladné, tak program dále vypíše tolik znaků ‘+’, jaká je hodnota daného prvku. Pokud bude číslo záporné, tak program vypíše odpovídající počet znaků ‘-’. Např. pro pole { 5, 1, -2, -3, 3 } bude výstup: 0+++++ 1+ 2-- 3--- 4+++
Úloha č.6 Je dáno dvou rozměrné pole (matice). int[3][2] pole = { {1,2}, {3,4}, {5,6} }; A.) Vypište toto pole na obrazovku. Dodržujte úmluvu [řádek][sloupec]. Na výstupu bude: 1 2 3 4 5 6 B.) Vypište na obrazovku vždy jen první prvek v prvním sloupci. Na výstupu bude: 1 3 5. C.) Vypište jen druhý řádek matice. Na výstupu bude 3 4. D.) Projděte a vypište pole v obráceném pořadí. Na výstupu bude: 6 5 4 3 2 1 E.) Transponujte danou matici (dvou rozměrné pole). Na výstupu bude: 1 3 5 2 4 6
Úloha č.7 Deklarujte a definujte si vlastní statické pole celých čísel o rozměrech NxN. A.) Vypište ho na obrazovku. B.) Vypište součet všech prvků v poli. C.) Vypište aritmetický průměr všech hodnot v poli. D.) Vypište prvky na diagonále (Nápověda: prvky na diagonále získáte tak, že se při průchodu polem budou indexy řádků a sloupců rovnat) E.) Vypište součet prvků na řádcích. F.) Vypište součin prvků v jednotlivých sloupcích. G.) Vypište čísla v poli, která jsou dělitelná číslem 3 a zároveň sudá, nebo čísla dělitelná devíti a zároveň větší než 999.
Úloha č.8 Vytvořte a naplňte hodnotami dvě dvou rozměrná pole (matice) o velikosti NxN. (Například 2x2). A.) Vypište součet těchto dvou matic. Nápověda: Výsledek je matice, kde jsou sečteny prvky matic na odpovídajících (stejných) pozicích. B.) Vypište součin výše vytvořených matic. Nápověda:
Úloha č.9 Jsou dány matice A o velikosti N1xN2 a matice B o velikosti N2xN3. Určete součin matic A*B.
Úloha č.10 Deklarujte a definujte tři pole (pole R, G, a pole B), každé o velikosti 3x3. Naplňte všechna pole hodnotami od 0 do 255 a vypište tato pole na obrazovku. Tyto tři pole představují barevný obrázek o velikosti 3x3 pixelů. Každé pole uchovává jednu barevnou složku pixelu na příslušné souřadnici. Pole R uchovává červenou(red), pole G uchovává zelenou(green) a pole B uchovává modrou složku pixelu (blue). Viz. další snímek prezentace. Úkol zní: Převeďte tento barevný obrázek na odstíny šedi. Nápověda: Pokud je dán barevný pixel složený ze složek r,g,b, tak převod na černobílý pixel se dá jednoduše provést například zprůměrováním těchto hodnot. Vypište na obrazovku čísla, která reprezentují výslednou hodnotu každého pixelu v odstínech šedi.
Úloha č. 10 Pixel (0, 0) R = 255 G = 0 B = 0 Pixel (0, 1) R = 0 = 85 Pixel (0, 1) = 33 Pixel (0, 2) = 100 Pixel (1, 0) R = 255 G = 255 B = 0 Pixel (1, 1) R = 255 G = 255 B = 255 Pixel (1, 2) R = 0 G = 0 B = 0 Pixel (1, 0) = 167 Pixel (1, 1) = 255 Pixel (1, 2) = 0 Pixel (2, 0) R = 0 G = 0 B = 200 Pixel (2, 1) R = 200 G = 120 B = 200 Pixel (2, 2) R = 228 G = 108 B = 10 Pixel (2, 0) = 67 Pixel (2, 1) = 173 Pixel (2, 2) = 114
Co si zapamatovat? Práci s více rozměrným statickým polem Procházení více rozměrného statického pole pomocí cyklů
Domácí úkol Upravte úlohu č. 10. Existují i jiné způsoby převodu z barevného obrázku na odstíny šedi. Najděte je a naimplementujte!