Pole se používají k ukládání více hodnot do jedné proměnné, namísto deklarování samostatných proměnných pro každou hodnotu. Chcete-li deklarovat pole, definujte typ proměnné, zadejte název pole následovaný hranatými závorkami a zadejte počet prvků, které má uložit:
string cars[4];
Nyní jsme deklarovali proměnnou, která obsahuje pole ze čtyř řetězců. Chcete-li do něj vložit hodnoty, můžeme použít literal pole – umístěte hodnoty do seznamu odděleného čárkami do složených závorek:
string cars[4] = {"Škoda", "BMW", "Ford", "Mazda"};
K prvku pole se dostanete odkazem na číslo indexu v hranatých závorkách []
.
string cars[4] = {"Škoda", "BMW", "Ford", "Mazda"};
cout << cars[0];
// Výstupy Škoda
Chcete-li změnit hodnotu konkrétního prvku, podívejte se na číslo indexu:
string cars[4] = {"Škoda", "BMW", "Ford", "Mazda"};
cars[0] = "Opel";
cout << cars[0];
// Nyní vyrábí Opel místo Škoda
Pomocí smyčky můžete procházet prvky pole for
.
string cars[5] = {"Škoda", "BMW", "Ford", "Mazda", "Volvo"};
for (int i = 0; i < 5; i++) {
cout << cars[i] << "\n";
}
Tento příklad vypíše index každého prvku spolu s jeho hodnotou:
string cars[5] = {"Škoda", "BMW", "Ford", "Mazda", "Volvo"};
for (int i = 0; i < 5; i++) {
cout << i << " = " << cars[i] << "\n";
}
Existuje také smyčka „ for-each “ , která se používá výhradně k procházení prvků v poli:
for (type variableName : arrayName) {
// blok kódu, který se má provést
}
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
Kompilátor je dostatečně chytrý, aby určil velikost pole na základě počtu vložených hodnot, proto je možné některé vynechat:
string cars[] = {"Volvo", "BMW", "Ford"}; // Tři prvky pole
string cars[3] = {"Volvo", "BMW", "Ford"}; // Také tři prvky pole. Tento přístup je však považován za nejlepší,
//protože sníží pravděpodobnost chyb ve vašem programu.
Chcete-li získat velikost pole, můžete použít sizeof()
operátor:
Proč se ve výsledku zobrazilo 20
místo 5
, když pole obsahuje 5 prvků?
Je to proto, že sizeof()
operátor vrací velikost typu v bajtech .
int
typ má obvykle 4 bajty, takže z příkladu výše 4 x 5 (4 bajty x 5 prvků) = 20 bajtů .
Chcete-li zjistit, kolik prvků má pole , musíte vydělit velikost pole velikostí datového typu, které obsahuje:
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);
Pole v podmínce smyčky ( i < 5
). Není ideální, protože to bude fungovat pouze pro pole zadané velikosti.
Použitím sizeof()
přístupu z výše uvedeného příkladu však nyní můžeme vytvořit smyčky, které fungují pro pole libovolné velikosti, což je udržitelnější.
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
cout << myNumbers[i] << "\n";
}
Chcete-li deklarovat vícerozměrné pole, definujte typ proměnné, zadejte název pole následovaný hranatými závorkami, které určují, kolik prvků má hlavní pole, a další sadou hranatých závorek, která označuje, kolik prvků má dílčí pole. :
string letters[2][4];
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
Každá sada hranatých závorek v deklaraci pole přidává do pole další rozměr . Pole, jako je výše uvedené, má dva rozměry. Pole mohou mít libovolný počet rozměrů. Čím více rozměrů má pole, tím složitější je kód.
Chcete-li získat přístup k prvku vícerozměrného pole, zadejte číslo indexu v každém z rozměrů pole. Tento příkaz přistupuje k hodnotě prvku v prvním řádku (0) a třetím sloupci (2) pole písmen
↓ → 0 1 2 3 4
0
1
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
cout << letters[0][2]; // Výstupem "C"
Chcete-li změnit hodnotu prvku, podívejte se na indexové číslo prvku v každé z dimenzí:
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
letters[0][0] = "Z";
cout << letters[0][0]; // Nyní výstupy "Z" namísto "A"
// Vložili jsme "1" na znamení, že existuje loď.
bool ships[4][4] = {
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 1, 0 }
};
// Sledujte, kolik zásahů má hráč a kolik tahů odehrál v těchto proměnných
int hits = 0;
int numberOfTurns = 0;
// Nechte hráče pokračovat, dokud nezasáhne všechny čtyři lodě
while (hits < 4) {
int row, column;
cout << "Výběr souřadnic\n";
// Požádejte hráče o řádek
cout << "Vyberte číslo řádku mezi 0 a 3: ";
cin >> řádek;
// Požádejte hráče o sloupec
cout << "Vyberte číslo sloupce mezi 0 a 3: ";
cin >> sloupec;
// Zkontrolujte, zda v těchto souřadnicích existuje loď
if (loď[row][column]) {
// Pokud hráč zasáhne loď, odstraňte ji nastavením hodnoty na nulu.
loď[row][column] = 0;
// Zvyšte počítadlo zásahů
hits++;
// Řekněte hráči, že zasáhli loď a kolik lodí zbývá
cout << "Zásah! " << (4-zásahy) << " odečteny.\n\n";
} else {
// Řekněte hráči, že minul
cout << "Vedle\n\n";
}
// Spočítejte, kolik tahů hráč prošel
numberOfTurns++;
}
cout << "Vítězství!\n";
cout << "Vyhráli jste v" << numberOfTurns << " kolech";