Příklady ke zkoušce
Abschlussbedingungen
Pozn. Kurzívou jsou označena místa, která je třeba doprogramovat. Pokud není řečeno jinak, všechny matice jsou čtvercové. Pole jsou obvykle do podprogramů předávána hodnotou, pokud jsou předávána odkazem, pak je to výslovně uvedeno.
4. Matice
4.4. Operace s prvky - lehčí příklady
- Maximum v reálné matici:
double m; // m ... libovolný prvek m = libovolný prvek matice např. levý horní Pro všechny indexy řádků Pro všechny indexy sloupců Je-li (m < prvek na pozici [i, j]), pak do m ulož prvek na pozici [i, j] Navrátit m
- Průměr prvků reálné matice:
double m = 0; Pro všechny indexy řádek Pro všechny indexy sloupců Přičíst prvek v pozici[i, j] do m Navrátit podíl m a druhé mocniny rozměru matice
Z celočíselné matice vytvořit boolovskou, false pro liché, true pro sudé:
static void CopyIPoleToBPole(int n, int[,] iPole, bool[,] bPole) { Pro všechny indexy řádků Pro všechny indexy sloupců Jsou 3 možnosti: a) bPole[i, j] = iPole[i, j] % 2 == 0; b) bPole[i, j] = (iPole[i, j] % 2 == 0) ? true : false; c) if (iPole[i, j] % 2 == 0) bPole[i, j] = true; else BPole[i, j] = false; }
- Záměna řádek v matici (první za druhý):
static void ZamenRadky(int n, int[,] a, int prvy, int druhy) { int t; Pro všechny indexy sloupců i { t = prvek ve sloupci i prvního řádku prvek ve sloupci i prvního řádku = prvek ve sloupci i druhého řádku prvek ve sloupci i druhého řádku = t; } }
- Zjištění počtu sudých prvků v matici:
int k = 0;
Pro všechny indexy řádků
Pro všechny indexy sloupců
Je-li prvek matice sudý, pak navýšit k
Navrátit k- Průměr z prvků mimo diagonály:
// kolik ... počet prvků mimo diagonály Deklarovat a nulovat kolik // m ... součet hodnot prvků mimo diagonály Deklarovat a nulovat m Pro všechny indexy řádků Pro všechny indexy sloupců Je-li prvek mimo diagonály, pak přičíst hodnotu prvku do m a navýšit kolik Je-li kolik různé od nuly, navrátit podíl m a kolik, jinak navrátit nulu
- Součet matic:
static void SectiMatice(int n, int[,] iPole, int[,] iPole1, int[,] iPole2) { Pro všechny indexy řádků Pro všechny indexy sloupců Do prvku matice iPole naplnit součet prvků matice iPole1 a iPole2 v odpovídající pozici }
- První a druhá nejvyšší hodnota v celočíselné matici:
static (int, int) PrvniADruhaNejvyssi(int n, int[,] a) { Deklarovat prvni a naplnit prvkem z a[0, 0] // nebo kterýkoliv jiný Deklarovat druha a naplnit hodnotou nejmenšího celého čísla Pro všechny indexy řádků Pro všechny indexy sloupců Je-li (prvni < prvek matice), pak prvni = prvek matice Pro všechny indexy řádků Pro všechny indexy sloupců Je-li (druha < prvek matice && prvek matice < prvni), pak druha = prvek matice Navrátit prvni a druha }
- Kolik je prvočísel v matici:
Naprogramovat test na prvočíslo static int KolikVyskytu(int n, int[,] a) { Deklarovat a nulovat pocet Pro všechny indexy řádků Pro všechny indexy sloupců Je-li hodnota prvku prvočíslo, pak navýšit pocet Navrátit pocet }
- Je součet hodnot na hlavní diagonále větší než na vedlejší:
Deklarovat a nulovat soucetNaHlavni a soucetNaVedlejsi Pro hodnoty indexu od 0 do rozměru matice – 1 Přičíst hodnotu prvku na hlavní diagonále do soucetNaHlavni Přičíst hodnotu prvku na vedlejší diagonále do soucetNaVedlejsi Navrátit true, pokud soucetNaHlavni je větší než soucetNaVedlejsi, jinak navrátit false
- Je součet hodnot na lichých řádcích a lichých sloupcích matice větším, než součet na sudých řádcích a sudých sloupcích:
Deklarovat a nulovat lichlich a sudsud Pro všechny indexy řádků Pro všechny indexy sloupců Je-li index řádku lichý a index sloupce lichý, pak navýšit lichlich o hodnotu prvku matice Je-li index řádku sudý a index sloupce sudý, pak navýšit sudsud o hodnotu prvku matice Navrátit true, pokud je lichlich větší než sudsud, jinak navrátit false