Dvourozměrná pole

Některá data tvoří tabulku s řádky a sloupci: sedadla v kině, šachovnice, školní rozvrh. Pro taková data má jazyk C dvourozměrná pole, tedy pole se dvěma velikostmi:

int sedadla[3][4] = {
    {1, 1, 0, 0},
    {0, 1, 1, 1},
    {0, 0, 0, 1}
};

Toto pole je malé kino se 3 řadami po 4 sedadlech: 1 znamená, že je sedadlo obsazené, 0, že je volné. První číslo v hranatých závorkách je počet řádků, druhé počet sloupců. Ve složených závorkách má každý řádek svůj vlastní pár složených závorek a od dalšího řádku ho odděluje čárka. Každý řádek nemusíte psát na samostatný řádek kódu, ale tabulka je tak dobře vidět.

Prvek má dva indexy: nejdřív řádek, pak sloupec, oba počítané od 0. sedadla[1][2] je prvek ve druhém řádku (index 1) a třetím sloupci (index 2). Čtete a měníte ho jako kterýkoli jiný prvek:

printf("%d\n", sedadla[1][2]);
sedadla[2][0] = 1;
printf("%d\n", sedadla[2][0]);

Program vypíše:

1
1

Abyste prošli celou tabulku, potřebujete dva vnořené cykly. Vnější prochází řádky a pro každý řádek prochází vnitřní cyklus jeho sloupce. Znáte to z lekce o cyklech, kde vnořené cykly vypisovaly řádky a sloupce:

const int RADKY = 3;
const int SLOUPCE = 4;
for (int radek = 0; radek < RADKY; radek++) {
    for (int sloupec = 0; sloupec < SLOUPCE; sloupec++) {
        printf("%d ", sedadla[radek][sloupec]);
    }
    printf("\n");
}

Po změně z předchozí ukázky program vypíše:

1 1 0 0 
0 1 1 1 
1 0 0 1 

Vnitřní cyklus vypíše čtyři sedadla řádku na jeden řádek výpisu a printf("\n") za vnitřním cyklem řádek ukončí. Potom vnější cyklus přejde na další řádek. Díky názvům radek a sloupec je jasné, který index je který. Proměnné i a j se snadno spletou.

Index za koncem je i tady chyba: sedadla[3][0] nepůjde přeložit (error: array index 3 is past the end of the array (that has type 'int[3][4]')) a cyklus s podmínkou radek <= RADKY se zastaví s chybou RuntimeError: unreachable.

Pokyny

Zákazník si koupil druhé sedadlo ve třetí řadě. Pod výpis napište příkaz, který tento prvek pole sedadla změní na 1.

Vypište celé kino pomocí dvou vnořených cyklů, každou řadu na samostatný řádek a sedadla oddělená mezerami:

1 1 0 0
0 1 1 1
0 1 0 1

Spočítejte volná místa: vytvořte proměnnou volna s hodnotou 0, projděte kino znovu dvěma vnořenými cykly a pro každou 0 zvyšte volna o 1. Za cykly vypište výsledek jako Volná místa: 5.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

11/12