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

5.6.2. Приклад використання масивів рядків

Масиви рядків зазвичай використовують для оброблення таблиць даних. Розглянемо, наприклад, спрощену базу даних службовців, у якій зберігається ім'я, номер телефону, кількість годин, відпрацьованих службовцями за звітний період, і розмір погодинного окладу для кожного службовця. Щоб створити таку програму для колективу, що складається з десяти службовців, визначимо чотири масиви (з них перші два будуть масивами рядків).

char name[10][80]; // Масив імен службовців.

char phone[10][20]; // Масив телефонних номерів службовців.

float hours[10]; // Масив годин, відпрацьованих за тиждень.

float oklad[10]; // Масив погодинних окладів.

Щоб ввести інформацію про кожного службовця, спробуємо скористатися функцією enter().

// Функція введення інформації в базу даних

void enter()

{

int i;

char tmp[80];

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

cout << "Введіть прізвище службовця: ";

cin >> name[i];

cout << "Введіть номер телефону службовця: ";

cin >> phone[i];

cout << "Введіть кількість відпрацьованих годин: ";

cin >> hours[i];

cout << "Введіть оклад службовця: ";

cin >> oklad[i];

}

}

На підставі введених даних можна скласти звіт, обчисливши заробітну плату, яка належить кожному службовцю. Для цього скористаємося такою функцією report():

// Відображення звіту

void report()

{

int i;

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

cout << name[i] << " " << phone[i] << "\n";

cout << "Заробітна плата за тиждень: "

<< oklad[i]*hours[i];

cout << "\n";

}

}

Повністю програму бази даних службовців наведено нижче. Зверніть особливу увагу на те, як реалізується доступ до кожного масиву. Ця версія програми ведення бази даних службовців ще далека від досконалості, оскільки введена в неї інформація втрачається відразу ж після виходу з програми. Трохи згодом Ви навчитеся зберігати інформацію в дисковому файлі.

Код програми 5.18. Демонстрація простої програми ведення бази даних службовців

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

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

char name[10][80]; // Масив імен службовців.

char phone[10][20]; // Масив телефонних номерів службовців.

float hours[10]; // Масив годин, відпрацьованих за тиждень.

float oklad[10]; // Масив погодинних окладів.

int menu_select();

void enter(), report();

int main()

{

int vybir;

do {

vybir = menu_select(); // Отримуємо команду вибрану користувачем.

switch(vybir) {

case 0: break;

case 1: enter();

break;

case 2: report();

break;

default: cout << "Спробуйте ще раз.\n\n";

}

} while(vybir != 0);

getch(); return 0;

}

// Функція повертає команду, вибрану користувачем.

int menu_select()

{

int vybir;

cout << "0. Вихід з програми\n";

cout << "1. Введення інформації\n";

cout << "2. Генерування звіту\n";

cout << "\n Виберіть команду: ";

cin >> vybir;

return vybir;

}

// Функція введення інформації в базу даних.

void enter()

{

int i;

char tmp[80];

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

cout << "Введіть прізвище службовця: ";

cin >> name[i];

cout << "Введіть номер телефону службовця: ";

cin >> phone[i];

cout << "Введіть кількість відпрацьованих годин: ";

cin >> hours[i];

cout << "Введіть оклад службовця: ";

cin >> oklad[i];

}

}

// Відображення звіту.

void report()

{

int i;

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

cout << name[i] << " " << phone[i] << "\n";

cout << "Заробітна плата за тиждень: "

<< oklad[i]*hours[i];

cout << "\n";

}

}

Розділ 6. Особливості застосування покажчиків

Покажчики, поза сумнівом, – один з найважливіших і складних аспектів мови програмування C++. Значною мірою потужність багатьох засобів мови програмування C++ визначається використанням покажчиків. Наприклад, завдяки ним забезпечується підтримка зв'язних списків і динамічного виділення пам'яті, саме вони дають змогу функціям змінювати значення своїх аргументів. Однак ці питання будуть розглядатися в подальших розділах, а поки що (тобто у цьому розділі) розглянемо основні особливості застосування покажчиків і продемонструємо, як можна уникнути деяких потенційних проблем, пов'язаних з їх використанням.

Під час розгляду основних понять про покажчики нам доведеться використовувати таке поняття як розмір базових С++-типів даних. Для цього запам'ятаємо тільки те, що символи займають в пам'яті один байт, цілочисельні значення – чотири, значення з плинною крапкою типу float – чотири, а значення з плинною крапкою типу double – вісім (ці розміри характерні для типового 32-розрядного середовища).