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