Anglická verze
logolink

< Zpět na seznam lekcí

Dvourozměrné pole (2D pole)

AlgortimyObsah lekce:

  • Princip dvourozměrného pole
  • Výpis dvourozměrného pole
  • Plnění dvourozměrného pole

Princip dvourozměrného pole

Oproti klasickému jednorozměrnému poli se liší dalším rozměrem navíc. Ukažme si výpis prázdného 2d pole rozměru 5x5:

         
         
         
         
         

Dobrou analogií je například list čtverečkovaného papíru o rozměru mxn čtverečků.

Výpis 2d pole

Ukažme si výpis prázdného 2d pole:

Výpis prázdného dvourozměrného pole
program Project2;
{$APPTYPE CONSOLE}

uses
SysUtils;
const m=2; n=4;
type pole2d = array[1..m,1..n]of integer;
var p:pole2d;
radek, sloupec:integer;

begin
  for radek:=1 to m do
    for sloupec:=1 to n do
      write(p[radek, sloupec],' ');
  readln;
end.

Vypsaná čísla v poli jsou za sebou a není zřetelně vidět, že se jedná o 2d pole. K ilustraci tohoto faktu zdrojový kód doplníme příkazem writeln po každém vypsaném řádku pole.

Výpis prázdného dvourozměrného pole
program Project2;
{$APPTYPE CONSOLE}

uses
SysUtils;
const m=2; n=4;
type pole2d = array[1..m,1..n]of integer;
var p:pole2d;
radek, sloupec:integer;

begin
  for radek:=1 to m do
  begin
    for sloupec:=1 to n do
      write(p[radek, sloupec],' ');
    writeln;
  end;
  readln;
end.

Plnění 2d pole

V následujících cvičeních si dáme za cíl různými způsoby naplnit čtvercové (typu nxn) 2d pole čísly. Pro zobrazení na obrazovce zvolíme rozměr 10x10.

Základní algoritmus pro naplnění pole čísly
program Project2;
{$APPTYPE CONSOLE}

uses
SysUtils;
const m=10; n=10;
type pole2d = array[1..m,1..n]of integer;
var p:pole2d;
radek, sloupec:integer;

begin
  for radek:=1 to m do
  begin
    for sloupec:=1 to n do
    begin

    end;
  end;

  for radek:=1 to m do
  begin
    for sloupec:=1 to n do
      write(p[radek, sloupec]:3,' ');
    writeln;
  end;
  readln;
end.

Všude jedničky

111
111
111

Všude jedničky
p[radek, sloupec]:=1;

V řádcích čísla 1..n

123
123
123

V řádcích čísla 1..n
p[radek, sloupec]:=sloupec;

Ve sloupcích čísla 1..n

111
222
333

Ve sloupcích čísla 1..n
p[radek, sloupec]:=radek;

Malá násobilka

123
246
369

Malá násobilka
p[radek, sloupec]:=radek*sloupec;

Na diagonále jedničky

100
010
001

Na diagonále jedničky
if radek=sloupec then
   p[radek, sloupec]:=1
else
   p[radek, sloupec]:=0

Na diagonále a nad jedničky

111
011
001

Na diagonále a nad jedničky
if radek<=sloupec then
   p[radek, sloupec]:=1
else
   p[radek, sloupec]:=0

Na diagonálách jedničky

101
010
101

Na diagonálách jedničky
// if (radek=sloupec) or (radek+sloupec=11) then
// if (radek=sloupec) or (radek+sloupec=n+1) then
if (radek=sloupec) or (radek=m-sloupec+1) then
   p[radek, sloupec]:=1
else
   p[radek, sloupec]:=0

Domácí úkol

Napište program pro výpočet aritmetického průměru libovolného počtu zadaných čísel ve 2d poli.

Domácí úkol

Napište program pro nalezení minima a maxima ze všech zadaných čísel ve 2d poli.

Otázky

  1. Kdy je vhodné použít 2d pole? Uveďte konkrétní příklady.
webdesign, xhtml, css, php - Mgr. Michal Mikláš