Obsah lekce:
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ů.
Ukažme si výpis 2d pole, jehož výchozí hodnoty nastavíme na 0:
#include "stdafx.h"
#define M 2
#define N 4
int _tmain(int argc, _TCHAR* argv[])
{
int p[M][N];
int radek, sloupec;
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
p[radek][sloupec] = 0;
}
}
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
printf("%d ", p[radek][sloupec]);
}
}
fflush(stdin);
getchar();
return 0;
}
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.
#include "stdafx.h"
#define M 2
#define N 4
int _tmain(int argc, _TCHAR* argv[])
{
int p[M][N];
int radek, sloupec;
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
p[radek][sloupec] = 0;
}
}
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
printf("%d ", p[radek][sloupec]);
}
printf("\n");
}
fflush(stdin);
getchar();
return 0;
}
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.
#include "stdafx.h"
#define M 10
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{
int p[M][N];
int radek, sloupec;
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
}
}
for (radek = 0; radek < M; radek++)
{
for (sloupec = 0; sloupec < N; sloupec++)
{
printf("%d ", p[radek][sloupec]);
}
printf("\n");
}
fflush(stdin);
getchar();
return 0;
}
1 | 1 | 1 |
1 | 1 | 1 |
1 | 1 | 1 |
p[radek, sloupec]=1;
1 | 2 | 3 |
1 | 2 | 3 |
1 | 2 | 3 |
p[radek, sloupec]=sloupec;
1 | 1 | 1 |
2 | 2 | 2 |
3 | 3 | 3 |
p[radek][sloupec]=radek;
1 | 2 | 3 |
2 | 4 | 6 |
3 | 6 | 9 |
p[radek][sloupec]=radek*sloupec;
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
if (radek==sloupec)
{
p[radek, sloupec]=1;
}
else
{
p[radek, sloupec]=0;
}
1 | 1 | 1 |
0 | 1 | 1 |
0 | 0 | 1 |
if (radek<=sloupec)
{
p[radek, sloupec]=1;
}
else
{
p[radek, sloupec]=0;
}
1 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 1 |
if ((radek=sloupec) || (radek=M-sloupec+1))
{
p[radek][sloupec]=1;
}
else
{
p[radek][sloupec]=0;
}
Napište program pro výpočet aritmetického průměru libovolného počtu zadaných čísel ve 2d poli.
Napište program pro nalezení minima a maxima ze všech zadaných čísel ve 2d poli.