Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

5.3.5. Використання ознаки завершення рядка

Факт завершення нульовими символами всіх С++-рядків можна використовувати для спрощення різних операцій над ними. Наведений нижче приклад дає змогу переконатися у тому, наскільки простий програмний код потрібен для заміни всіх символів рядка їх прописними еквівалентами.

Код програми 5.13. Демонстрація перетворення символів рядка в їх прописні еквіваленти

#include <iostream> // Для потокового введення-виведення

#include <cstring> // Для роботи з рядковими типами даних

#include <cctype> // Для роботи з символьними аргументами

using namespace std; // Використання стандартного простору імен

int main()

{

char strMas[80];

int i;

strcpy(strMas, "test");

for(i=0; strMas[i]; i++) strMas[i] = toupper(strMas[i]);

cout << strMas;

getch(); return 0;

}

Ця програма у процесі виконання виведе на екран слово TEST. Тут використовується бібліотечна функція toupper(), яка повертає прописний еквівалент свого символьного аргументу. Для виклику функції toupper() необхідно приєднати до програми заголовок <cctype>.

Звернемо Вашу увагу на те, що як умову завершення циклу for використано масив strMas, індексований змінній i, що керує (strMas[i]). Такий спосіб керування циклом цілком прийнятний, оскільки за дійсне значення у мові програмування C++ приймається будь-яке ненульове значення. Згадаймо, що всі друкарські символи представляються значеннями, не дорівнюють нулю, і тільки символ, що завершує рядок, дорівнює нулю. Отже, цей цикл працює доти, доки індекс не вкаже на нульову ознаку кінця рядка, тобто поки значення strMas[i] не стане нульовим. Оскільки нульовий символ відзначає кінець рядка, цикл зупиняється точно там, де потрібно. При подальшій роботі з цим навчальним посібником Ви побачите багато прикладів, у яких нульова ознака кінця рядка використовують так само.

Варто знати! Окрім функції toupper(), стандартна бібліотека мови програмування C++ містить багато інших функцій оброблення символів. Наприклад, функцію toupper() доповнює функція tolower(), яка повертає рядковий еквівалент свого символьного аргументу. Часто використовують такі функції, як isalpha(), isdigit(), isspace() і ispunct(), які приймають символьний аргумент і визначають, чи належить він до відповідної категорії. Наприклад, функція isalpha() повертає значення ІСТИНА, якщо її аргументом є буква (елемент алфавіту).

5.4. Дво- та багатовимірні масиви

5.4.1. Двовимірні масиви

У мові програмування C++ можна використовувати двовимірні масиви. Двовимірний масив, по суті, є списком одновимірних масивів. Щоб оголосити двовимірний масив цілочисельних значень розміром 1020 з іменем twod, достатньо записати таке:

int twod[10][20];

Зверніть особливу увагу на це оголошення. На відміну від багатьох інших мов програмування, у яких під час оголошення масиву значення розмірностей відокремлюються комами, у мові програмування C++ кожна розмірність полягає у власну пару квадратних дужок.

Щоб отримати доступ до елемента масиву twod з координатами 35, необхідно використовувати запис twod[3][5]. У наведеному нижче прикладі в двовимірний масив поміщаються послідовні числа від 1 до 12.

Код програми 5.14. Демонстрація роботи з двовимірними масивами

#include <iostream> // Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

int main()

{

int t, i, num[3][4];

for(t=0; t<3; ++t) {

for(i=0; i<4; ++i) {

num[t][i] = (t*4)+i+1;

cout << num[t][i] << " ";

}

cout << "\n";

}

getch(); return 0;

}

У наведеному прикладі елемент масиву num[0][0] набуде значення 1, елемент num[0][1] – значення 2, елемент num[0][2] – значення 3 і т.д. Значення елемента num[2][3] буде дорівнювати числу 12. Схематично цей масив можна представити так, як це показано на рис. 5.1.

У двовимірному масиві позиція будь-якого елемента визначається двома індексами. Якщо представити двовимірний масив у вигляді таблиці даних, то один індекс означає рядок, а другий – стовпець. З цього виходить, якщо доступ до елементів масиву надати в порядку, у якому вони реально зберігаються в пам'яті, то правий індекс змінюватиметься швидше, ніж лівий.

Необхідно пам'ятати! Місце зберігання для всіх елементів масиву визначається під час компілювання програми. Окрім того, пам'ять, виділена для зберігання масиву, використовується протягом всього часу наявності масиву.

Рис. 5.1. Схематичне представлення масиву num

Для визначення кількості байтів пам'яті, займаної двовимірним масивом, використовують така формула:

кі-сть байтів = кі-сть рядків  кі-сть стовпців  розмір типу в байтах

Отже, двовимірний цілочисельний масив розмірністю 105 займає в пам'яті 1052, тобто 100 байт (якщо цілочисельний тип має розмір 2 байт).