You are on page 1of 31

Зміст

Вступ.........................................................................................................................4
РОЗДІЛ 1 Постановка задачі..................................................................................6
1.1 Уточнена постановка задачі на розробку програмного забезпечення.......6
РОЗДІЛ 2 Розробка програмного продукту..........................................................7
2.1 Метод розв’язку задачі...................................................................................7
2.2 Алгоритм розв’язку задачі...........................................................................10
РОЗДІЛ 3 Опис розробленого програмного продукту.......................................14
3.1 Опис головних структур і змінних програми............................................14
3.2. Опис головних функцій програми.............................................................15
3.3. Опис інтерфейсу..........................................................................................16
3.4. Результати роботи програмного продукту................................................17
ВИСНОВКИ...........................................................................................................18
СПИСОК ЛІТЕРАТУРИ.......................................................................................19
Додаток А Текст програми

ВСП РФК КНЕУ СП КР 000 005 ПЗ


Зм Лист № докум. Підп. Дата
Вик. Гречка Д. Літера Лист Листів
Перев. Руденко А.П. Динамічна матриця П

Н.контр.
Затв. К 4-1
Вступ

С++ компільована мова програмування загального призначення,


поєднує властивості як високорівневих, так і низькорівневих мов
програмування. У порівнянні з її попередником, мові програмування С,
найбільшу увагу приділено підтримці об'єктно-орієнтованого та
узагальненого програмування.
Назва «мова програмування С++» походить від мови програмування С, в
якій унарний оператор ++ позначає інкремент змінної. Мова програмування
широко використовується для розробки програмного забезпечення. А саме,
створення різноманітних прикладних програм, розробка операційних систем,
драйверів пристроїв, а також відео ігор та багато іншого.
Існує кілька реалізацій мови програмування С++ як безкоштовних, так і
комерційних. Їх виробляють проекти: GNU, Microsoft і Embarcadero (Borland).
Проєкт GNU-проєкт розробки вільного програмного забезпечення (ВПЗ).
Мова програмування С++ була створена на початку 1980-х років, її
творець співробітник фірми BellLaboratories-Бьорн Страуструп. Він придумав
ряд удосконалень до мови програмування С, для власних потреб. Тобто
спочатку не планувалося створення мови програмування С++.
Ранні версії мови С++, відомі під назвою «Сі з класами», почали
з'являтися з 1980 року, з класами та об'єктами, тим самим зародив
передумови нової, заснованої на синтаксисі С, мови програмування.
Синтаксис С++ був заснований на синтаксисі С, оскільки Бйорн Страуструп
прагнув зберегти сумісність із мовою С.
В 1983 року відбулося перейменування мови «Сі з класами» на «мову
програмування С++». В нього були додані нові можливості: віртуальні
функції, перезавантаження функцій та операторів, посилання, константи та
інше. Його перший комерційний випуск відбувся в жовтні 1985 року.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Сі увібрав у нього найкращі якості даної мови, а завдяки розвитку,
оновленню та поліпшенню інструментів даної мови можна вирішити
практично будь-які завдання, що стоять перед програмістом.
У світлі розвитку інформаційних технологій все більше потрібні
грамотні фахівці в галузі об'єктно-орієнтованого програмування. Але навіть з
розвитком технологій виростити грамотного спеціаліста в галузі ООП мов
досить трудомісткий процес і вивчити самостійно вивчити С++ представляє
велику проблему.
Метою роботи є створення динамічної матриці цілих чисел та створення
функцій для роботи з даними програми.
Актуальність вивчення основ С++ завжди грає велику роль у навчанні
ООП, так як на даному етапі закладатися базові знання за основними
напрямками ООП без яких не вийде якісного розуміння програмування в
цілому.
Об'єкт дослідження: можливості об'єктно-орієнтованої мови
програмування С++ полягає у дослідженні можливостей мови програмування
С++ при створенні навчальних програм.
Завданнями є:
1) Вивчить основи мови програмування С++;
2) Написати функції для вирішення задач.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 1 Постановка задачі
1.1 Уточнена постановка задачі на розробку програмного
забезпечення

Описати динамічний масив MAS[M, N] цілих чисел. Створити функції


користувача:
- функцію для введення елементів матриці;
- функцію для визначення кількості елементів, які знаходяться в
діапазоні (-10, 10);
- функцію для виведення елементів матриці;
- функцію для визначення суми елементів головної діагоналі матриці.
Програму необхідно написати засобами мови програмування в С++.
Передбачити користувацький інтерфейс, перевірку коректності вводу та
виводу даних.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 2 Розробка програмного продукту
2.1 Метод розв’язку задачі

Мова C++ є набором команд, які говорять комп'ютеру, що необхідно


зробити. Цей набір команд зазвичай називається вихідний код або просто
код. Командами є «функції» або «ключові слова».
Ключові слова (зарезервовані слова С++) є основними будівельними
блоками мови. Функції є складними будівельними блоками, оскільки
записані в термінах більш простих функцій. Така структура функцій нагадує
зміст книги. Зміст може показувати розділи книги, кожен розділ у книзі може
мати свій зміст, що складається з пунктів, кожен пункт може мати свої
підпункти. Хоча C++ надає дуже багато загальних функцій і зарезервованих
слів, які можна використовувати, все-таки виникає потреба в написанні своїх
власних функцій.
Кожна програма в C++ має одну функцію, її називають головною або
main-функцією, виконання програми починається саме з цієї функції. З
головної функції можна викликати будь-які інші функції, неважливо, чи є
вони написаними, або, як згадувалося раніше, надаються компілятором.
Щоб отримати доступ до стандартних функцій, що поставляються з
компілятором, необхідно підключити заголовний файл # include.
Приклад програми:
#include <iostream>
using namespace std;
int main()
{
cout <<"Моя перша програма на С++\n";
cin.get();
}

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
#include це директива «препроцесору», яка повідомляє компілятору
помістити код із заголовного файлу iostreamв програму перед тим як
створити виконуваний файл, яка повідомляє компілятору помістити код із
заголовного файлу iostream в програму перед тим як створити виконуваний
файл.
Підключивши до програми заголовний файл, отримуємо доступ до
безлічі різних функцій. Наприклад, оператору потрібно ioistream. Рядок using
namespace std; повідомляє компілятору, що потрібно використовувати групу
функцій, які є частиною стандартної бібліотеки std. У тому числі цей рядок
дозволяє програмі використовувати оператори, такі як cout. Крапка з комою є
частиною синтаксису C++. Вона повідомляє компілятору, що це кінець
команди.
Наступний важливий рядок програми int main (). Цей рядок повідомляє
компілятору, що є функція з ім'ям main, і що функція повертає ціле число
типу int. Фігурні дужки { і } сигналізують про початок {і кінці} функції.
Фігурні дужки використовуються і в інших блоках коду, але позначають
завжди одне - початок і кінець блоку, відповідно. Він використовує символи,
відомі як «оператор зсуву», щоб вказати, що відправляється до виведення на
екран. Результатом виклику функції cout << є відображення тексту на екрані.
Послідовність \n фактично розглядається як єдиний символ, який позначає
новий рядок. Символ \n переміщає курсор на екрані на наступний рядок.
Точка з комою, додається до кінця, після кожного оператора С++.
Наступна команда cin.get(). Це ще один виклик функції, яка зчитує дані
із вхідного потоку даних та очікує натискання клавіші ENTER. Ця команда
зберігає консольне вікно від закриття, доки не буде натиснута клавіша
ENTER. Це дає час для того, щоб переглянути результат виконання
програми.
Після досягнення кінця головної функції (закриває фігурна дужка),
програма поверне значення 0 для операційної системи. Це значення, що

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
повертається, є важливим, оскільки, проаналізувавши його, ОС може судити
про те, успішно завершилася програма чи ні. Значення 0, що повертається,
означає успіх і повертається автоматично (але тільки для типу даних int, інші
функції, вимагають вручну повертати значення).

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
2.2 Алгоритм розв’язку задачі

Одним із фундаментальних понять в інформатиці є поняття алгоритму.


Походження терміна «алгоритм» пов'язані з математикою. Це слово походить
від алгоритму, видатного математика середньовічного Сходу. У своїй книзі
"Про індійські рахунки" він сформулював правила введення натуральних
чисел з арабськими цифрами та правила дій з ними за допомогою стовпця.
Пізніше алгоритмом стало точне правило, що визначає послідовність дій, що
забезпечують необхідний результат вихідних даних.
Алгоритм може бути сконструйований таким чином, що може бути
виконаний людиною або автоматичним пристроєм. Створення алгоритму,
навіть найпростішого, це творчий процес. Вона доступна лише живим
істотам, і тривалий час вважалося, що вона лише людська. Латинський
переклад його математичного трактату було підготовлено в 19 в. європейці
дізналися про десяткову систему числення та правила арифметики для
багатозначних чисел. Саме це правила тоді називалися алгоритмами.
Наведене вище визначення алгоритму не можна вважати суворим — не
зовсім зрозуміло, що таке «точне правило» або «послідовність дій для
бажаного результату».
Тому вони зазвичай формулюють кілька загальних властивостей
алгоритмів, які дозволяють відрізняти алгоритми від інших тверджень.
Такі якості:
Дискреція (розрив, поділ) - алгоритм повинен представляти процес
вирішення завдання у вигляді послідовності простих (або наперед
визначених) кроків. Будь-яка дія, передбачена алгоритмом, виконується лише
після завершення попереднього.
Визначення — кожне правило алгоритму має бути чітким і однозначним
і залишати місця для свавілля. Завдяки цій характеристиці виконання

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
алгоритму є механічним і не вимагає додаткових інструкцій або інформації
про задачу, що вирішується.
Ефективність (кінцевість) - алгоритм повинен призводити до розв'язання
задачі за кінцеве число кроків.
Масовий - алгоритм розв'язання задачі розробляється у загальному
вигляді, тобто. він має бути застосовним до класу завдань, що відрізняються
лише вихідними даними. У цьому випадку вихідні дані можуть бути вибрані
з діапазону, який називається областю дії алгоритму.
Наприклад, іноді алгоритм визначається на основі цих властивостей:
"Алгоритм - це послідовність математичних, логічних або комбінованих
операцій, що відрізняються детермінованістю, масою та орієнтацією і
призводять до вирішення всіх завдань даного класу за кінцеве число кроків".
Ця інтерпретація терміна «алгоритм» є неповною та неточною.
По-перше, неправильно пов'язувати алгоритм із розв'язанням проблеми.
Алгоритм може взагалі вирішити проблему.
По-друге, термін «маса» відноситься не до алгоритмів як таких, а до
математичних методів загалом. Вирішення завдань, поставлених практикою
математичних методів, засноване на абстракції — привласнюється набір
суттєвих ознак, характерних для певного набору явищ, і будуємо на основі
цих ознак математичну модель, з огляду на незначні ознаки кожного
конкретного явища. У цьому сенсі кожна математична модель має
властивість маси. Якщо вирішити задачу в рамках побудованої моделі, а
рішення представляємо як алгоритм, то рішення буде масовим завдяки
природі математичних методів.
Перше правило у тому, що у створенні алгоритму необхідно спочатку
вказати набір об'єктів, із якими алгоритм працюватиме. Формалізоване
(закодоване) уявлення цих об'єктів називається даними. Алгоритм починає
працювати з певним набором даних, званим Input, й у його роботи видає дані,
звані Output. Таким чином, алгоритм перетворює вхідні дані у вихідні. Це

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
дозволяє відразу відокремити алгоритми від «методів» і «процедур». Поки ми
не маємо формалізованих вхідних даних, ми не можемо створити алгоритм.
Друге правило у тому, що алгоритму необхідна пам'ять для роботи.
Пам'ять містить вхідні дані, з якими починає працювати алгоритм, проміжні
дані та вихідні дані, що є результатом роботи алгоритму. Пам'ять дискретна,
тобто складається з окремих осередків. Іменована комірка пам'яті називається
змінною. Теоретично алгоритмів обсяг пам'яті не обмежений, тобто
передбачається, що можна надати алгоритму будь-який обсяг пам'яті,
необхідний його роботи. Ці два правила не розглядаються у школі «теорії
алгоритмів». У той самий час практична робота з алгоритмами
(програмування) починається з цих правил.
У мовах програмування виділення пам'яті здійснюється декларативними
операторами (операторами опису змінних). У мові Basic описані в повному
обсязі змінні, зазвичай описують лише масиви. Але при запуску програми
транслятор мови аналізує всі ідентифікатори в тексті програми і виділяє
пам'ять для відповідних змінних.
Третє правило – розсуд. Алгоритм складається з окремих кроків (дій,
операцій, команд). Багато кроків, у тому числі алгоритм природно складено.
Четверте правило - ув'язнення. Після кожного кроку ви повинні вказати,
за яким кроком слід наступний, або дати команду зупинки. П'яте правило –
конвергенція (ефективність). Алгоритм повинен припинити працювати після
остаточної кількості кроків. І тут необхідно зазначити, що слід вважати
результатом роботи алгоритму.
Алгоритм роботи програми «Динамічна матриця» зображено на рисунку
2.1.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Початок

Оголошення змінних,
функцій

Меню

0
1
Функція
1

1 0
Введення
елементів Функція
2

1 0
Кількість
елементів Функці
я3

0
1
Сума елементів Функці
головної діагоналі я4

Виведення Продовжи
елементів ти роботу?

1
Вихід з
програми

Кінець

Рисунок 2.1 - Блок-схема алгоритму роботи програми

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 3 Опис розробленого програмного продукту
3.1 Опис головних структур і змінних програми

Масив – це набір однотипних елементів. Кожен елемент має свій


номер (індекс). Всі елементи масиву упорядковані за своїм індексом.
Масив може бути одновимірним чи багатовимірним. Елементи масиву
можуть мати просту чи складну структуру в залежності від
функціонального призначення даного масиву. Основною особливістю
масивів є те, що на етапі виділення пам’яті для збереження елементів
масиву відома точна кількість елементів масиву. Основними операціями
при роботі з масивами є:
- -виділення пам’яті для збереження елементів масиву;
- -вивільнення пам’яті;
- -сортування елементів масиву;
- -пошук елемента масиву, що відповідає заданому критерію
пошуку.
Виділення пам’яті під масив може бути статичним, коли кількість
елементів масиву відома на етапі розробки програми, або динамічним,
коли кількість елементів масиву стає відомою під час виконання програми.
При статичному виділенні вивільнення пам’яті відбувається автоматично
при закінченні роботи програми і програміст не має змоги виконати
вивільнення пам’яті під час роботи програми. При динамічному виділенні
вивільнення пам’яті також відбувається автоматично при закінченні
роботи програми, але програміст може при необхідності вивільнити
пам’ять в процесі виконання програми. Це робить програми більш
гнучкими, тому в сучасному програмуванні все частіше використовують
динамічне виділення пам’яті при роботі з масивами.
Динамічне виділення пам‘яті порівняно зі статичним виділенням
пам‘яті дає такі переваги:

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
- пам‘ять виділяється в міру необхідності програмним шляхом;
- немає зайвих витрат невикористаної пам‘яті. Виділяється стільки
пам‘яті скільки потрібно і коли потрібно;
- можна виділяти пам‘ять для масивів інформації, розмір яких наперед
невідомий. Визначення розміру масиву формується у процесі виконання
програми;
- зручно здійснювати перерозподіл пам‘яті. Або іншими словами, зручно
виділяти новий фрагмент для того самого масиву, якщо потрібно
виділити додаткову пам‘ять або звільнити непотрібну;
- при статичному способі виділення пам‘яті важко перерозподіляти
пам‘ять для змінної-масиву, оскільки вона вже виділена фіксовано. У
випадку динамічного виділення, це здійснюється легко і зручно.
Переваги статичного способу виділення пам‘яті:
- статичне (фіксоване) виділення пам‘яті краще використовувати, коли
розмір масиву інформації наперед відомий і є незмінний протягом
виконання усієї програми;
- статичне виділення пам‘яті не потребує додаткових операцій
звільнення з допомогою оператора delete. Звідси випливає зменшення
помилок програмування. Кожному оператору new має відповідати
оператор delete;
- природність (натуральність) представлення програмного коду, що
оперує статичними масивами.
В залежності від поставленої задачі, програміст має вміти правильно
визначити, який спосіб виділення пам‘яті підходить для тієї чи іншої змінної
(масиву).

Коли виникає необхідність зберігання даних у вигляді таблиць, у


форматі рядків і стовпців, доведиться використовувати двомірні масиви. У
таблиці нижче (рис. 3.1) наведено приклад масиву, що складається з чотирьох

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
рядків та чотирьох стовпців. Рядки в ньому вважаються першим виміром, а
стовпці другим. Для доступу до даних, що зберігаються в цьому масиві,
необхідно вказати ім'я масиву та два індекси, перший повинен відповідати
номеру, а другий номер стовпця, в якому зберігається необхідний елемент.

Рисунок 3.1 – Приклад масиву


Кількість елементів масиву дорівнює добуткові кількості елементів за
кожним індексом. У прикладі int B[3][4]; оголошено двовимірний масив з 3-х
рядків та 4-х стовпчиків (12-ти елементів) цілого типу:
В[0][0], В[0][1], В[0][2], В[0][3],
В[1][0], В[1][1], В[1][2], В[1][3],
В[2][0], В[2][1], В[2][2], В[2][3];
Під масив надається пам’ять, потрібна для розташування усіх його
елементів. Елементи масиву один за одним, з першого до останнього,
запам’ятовуються у послідовно зростаючих адресах пам’яті так само, як і
елементи одновимірного масиву. Наприклад, масив int B[3][4] зберігається у
пам’яті у такий спосіб:

Рисунок 3.2 – Спосіб збереження елементів масиву в пам’яті

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.2. Опис головних функцій програми

Програма мовою С++ складається з оголошень (змінних, констант,


типів, класів, функцій) і описів функцій. Серед функцій завжди є головна -
main ().
Відповідно до принципів модульності текст модуля розділяють на
заголовний файл інтерфейсу, що містить оголошення класів, функцій,
змінних, структур і т.д., і файл реалізації - .срр. Стандартне розширення
заголовних файлів .h. Директива – це інструкція компілятору, вона пояснює
компілятору, що користувач хоче зробити перед тим, як програма буде
відкомпільована.
При компіляції програми директива #include змушує компілятор
включати вміст заданого файлу в початок програми. Файли з розширенням h,
що включається в початок (чи заголовок) програми, називається заголовними
файлами. Якщо подивитися в каталог, що містить файли компілятора, то
знайдеться підкаталог з ім'ям INCLUDE, у якому знаходяться заголовні
файли. Уміст цих файлів можна вивести на екран чи принтер. Такі типи
даних, як int, float, char і long, є невід'ємною частиною C++ і не потрібно
писати ніякого коду, щоб повідомити компілятору про те, що означають ці
слова.
Програма C++ починається із підключення бібліотеки.
#include <iostream>
Оголошення змінних передбачає виділення пам`яті, якщо присутня
ініціалізація - занесення значення за адресою:
- змінна для діалогів
char vidp = 'n';
- допоміжна змінна для меню
int menu;
- оглошення елементів меню

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
int i, j, n;

Щоб вивести повідомлення, програми використовують cout і подвійний


знак менше <<. Слово cout являє собою вихідний потік, що С++ призначає на
стандартний пристрій виведення операційної системи (за замовчуванням -
монітор).
Часто буває корисно вставляти в програму текст, що призначається, як
коментар тільки для людини, що читає програму й ігнорується компілятором
у програмі. У C++ це можна зробити одним із двох способів.
Символи // починають коментар, що закінчується наприкінці рядка, на
якій вони з'явилися. Цей спосіб найбільш корисний для коротких коментарів.
Інший спосіб, /* коментар*/. Даний спосіб дає змогу створити великий
коментар (блок).
std::cout << "\n\n";
std::cout << "\t\t == " << "Курсовa робота" << " ==" << "\
n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "на тему: Динамiчна матриця" << " =="
<< "\n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "студента групи К 4-1" << " ==" <<
"\n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "Гречки Дениса Євгеновича" << " =="
<< "\n";
std::cout << "\t\t";
Даний фрагмент програми виводить на екран монітора символьний
рядок (текст, укладений у подвійних лапках).
де – \n – означає перехід на новий рядок;
Якщо не використовувати ці розділові символи, усі повідомлення в
програмі зіллються в один рядок.
В програмі використовується оператор if (<умова>) та оператор for.
Умова в операторі if повинна бути укладена в круглі дужки. При
виконанні умови виконується одна дія.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Оператор if - це умовний оператор, який використовується для
організації розгалужених алгоритмів. Підчас виконання оператора if спочатку
обчислюється логічний вираз. Якщо результат не дорівнює нулю, то
виконується перший оператор, який записаний після виразу, якщо результат
дорівнює нулю – виконується другий оператор, який записаний за ключовим
словом else.
Оператор for – це оператор вибору, з допомогою якого також
відбувається перебір всіх елементів у списку по циклу.
for (i=0; i<n; i++)
В дужках задаються початковий i=0 і кінцевий i<n елемент для циклу.
При застосуванні операції ++ до змінної просто додається одиниця. Перша
частина оператора for не обов'язково повинна бути описом, вона може
бути будь-яким оператором.
Дуже часто в процесі написання програми потрібно писати довгі if-else
конструкції, наприклад, коли ми отримуємо будь-який ключ від користувача;
якщо ви пишете гру, то доведеться перевіряти на яку кнопку натиснув
гравець (вправо, вліво, пробіл тощо).
Для зручного оформлення можна використати конструкції за
допомогою switch case.
Конструкція switch-case - це зручна заміна довгої if-else конструкції,
яка порівнює змінну з декількома константними значеннями, наприклад, int
або char.
Синтаксис
switch (<змінна>) {
case значення1:
Виконати якщо <змінна> == значення1
break;
case значення2:
Виконати якщо <змінна> == значення2

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
break;
...
default:
виконати, якщо жоден варіант не підійшов
break;
}
Змінна дужка порівнюється зі значеннями, описаними після ключового
слова case. Після двокрапки знаходиться код, який буде виконаний у разі
якщо змінна дорівнювала поточному значенню. break необхідний для того,
щоб перервати виконання switch.
В програмі передбачено 4 оператора case: для реалізації поставленого
на початку роботи завдання:
switch (menu)
{
- введення елементів динамічної матриці
case 1:
{ vved_MAS(MAS, n); vived_MAS(MAS, n);
}; break;

- кiлькiсть елементiв динамічної матриці, якi знаходяться в дiапазонi


(-10, 10)
case 2: {
std::cout << " Кiлькiсть елементiв, якi знаходяться в дiапазонi (-10,
10) = ";
std::cout << endl;
kilk_MAS(MAS, n);
}; break;

- сума елементiв головної діагоналi


case 3: { std::cout << "Сума елементiв головноi діагоналi = ";
sum_MAS(MAS, n);
}; break;

- виведення елементів динамічної матриці


case 4: { vived_MAS(MAS, n);
}; break;

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
В програмі курсової роботи «Динамічна матриця» створені функції
користувача:
- для введення даних матриці
void vved_MAS(int** MAS, int n)
{
std::cout << "\nВведення елементiв матрицi\n\n\n";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
std::cout << "\nВведiть елемент " << "[" << i << "]" << "[" <<
j << "]=";
std:cin >> MAS[i][j];
//std::cout << MAS[i][j];
}
std::cout << "________________________________________________";
std::cout << "\nЕлементи масиву успiшно введено\n\n\n";
}

- для визначення суми елементiв головної діагоналi динамічної


матриці
void sum_MAS(int** MAS, int n)
{
int sum = 0;
for (int i = 0; i < n; i++)

for (int j = 0; j < n; j++)


if (i == j)
sum += MAS[i][j];
std::cout << sum;
"_________________________________________________________";
std::cout << "\n\n\n";
}

- для визначення кількості елементів заданого діапазону динамічної


матриці
void kilk_MAS(int** MAS, int n)
{
int kilk_ = 0;
for (int i = 0; i < n; i++)

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
for (int j = 0; j < n; j++)

if ((MAS[i][j] > -10) && (MAS[i][j] < 10))


kilk_++;
std::cout << kilk_ << endl; ;
}
- для виведення матриці
void vived_MAS(int** MAS, int n)
{
cout << "Елементи матрицi\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cout << "[" << i << "]" << "[" << j << "]=" << MAS[i]
[j]<<"\n";
}
}
std::cout << "\
n________________________________________________________";
}

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.3. Опис інтерфейсу

При запуску завантажувального файлу перед нами з’являється вікно


(див. рис. 3.3) з інформацією про студента, що виконав дану роботу та пункти
меню даної програми.
При роботі з динамічною матрицею спочатку необхідно задати її розмір
(див. рис. 3.3)

Рисунок 3.3 – Вікно програми після запуску

Для роботи з іншими пунктами меню необхідно ввести з клавіатури


дані. (див. рис. 3.4). По закінченню введення даних з’являється повідомлення
– «Елементи масиву успiшно введено».
В програмі передбачений діалог з користувачем. Після виконання
кожного пункту меню з’являється повідомлення – «Продовжити роботу
програми? (y/n)», після введення відповідної літери, наприклад «у» можна
побачити ще одне повідомлення «Задайте елемент меню».(див. рис. 3.5)

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.4 – Введення елементів динамічної матриці

Рисунок 3.5 – Діалог

Для знаходження кiлькості елементiв в динамічній матриці розміром


3*3, якi знаходяться в дiапазонi (-10, 10) можна скористатися другим пунктом
меню.(див. рис. 3.6)

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.6 – Знаходження кількості елементів у заданому діапазоні

У третьому пункті меню можна переглянути роботу функції


знаходження суми елементiв головної діагоналi матриці. (див. рис. 3.7)

Рисунок 3.7 - Сума елементiв головної діагоналi

Для виведення елементів динамічної матриці введемо останній


четвертий пункт меню. (див. рис. 3.8) На екрані відобразяться елементи
раніше введеної динамічної матриці розміром 3*3.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.8 – Введення елементів динамічної матриці

В програмі «Динамічна матриця» передбачена перевірка на коректність


введення даних. (див. рис. 3.9)

Рисунок 3.9 – Введення помилкових даних

Задача, яка розглянута в даній курсовій роботі зводиться до


демонстрації основних можливостей мови C++.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.4. Результати роботи програмного продукту

В результаті виконання курсової роботи на тему «Динамічна матриця»


розроблено програму, що реалізує процес, описаний у постановці завдання.
В програмі створені функції користувача, що дають можливість
обчислити завдання, передбачені курсовою роботою:
- введення з клавіатури елементів динамічної матриці;
- визначення кiлькості елементiв в динамічній матриці, якi знаходяться в
дiапазонi (-10, 10) динамічної матриці;
- визначення суми елементiв головної діагоналi динамічної матриці;
- виведення елементів першого та другого масиву на екран монітора.
Процес роботи програми відображається на екрані та описаний в пункті
3.2 та 3.3 даної роботи.
В програмі після кожного пункту меню передбачений вихід з програми.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Висновки

У курсовій роботі на тему «Динамічна матриця» були поставлені


питання: вивчити основи програмування мови С++ і реалізувати завдання на
даній мові. На закінчення роботи можна зробити такі висновки.
В даний час мова програмування С++ є однією з основних у
практичному програмуванні. Переваги мови С++ це насамперед простота і
лаконічність. Мова С++ легко вчиться. Структура даних в С++ дозволяє
обробляти змінні такі як цілочисленні, рядкові, з плаваючою комою і масиви.
Програмування на С++ зараз стає все більш популярним і приваблює
безліч послідовників. На С++ пишуться ігри, додатки, прикладні програми,
інтерпретатори та CAD системи. А також виконується широкий спектр
завдань обчислювальної математики, методів оптимізації та теорій ланцюгів
та мереж.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Список літератури

1. Кириченко А. В. Основы современного програмирования / А. В.


Кириченко, А. А. Хрусталев. – СПб. : «Наука и техника», 2018 г. –
352с. : ил.
2. Павловская Т. А. C/C++. Программирование на языке высокого уровня. /
Т. А. Павловская. СПб. : Питер, 2008г. - 461с.
3. Панасенко С. П. Алгоритмы шифрования. Специальный справочник. / С.
П. Панасенко. – СПб. : БХВ-Петербург, 2012г. – 576с.
4. Шмитт К. CSS. Рецепты программирования. / К. Шмитт, 3-изд: Пер. с
англ. – М. : Издательство «Русская Редакция»; СПб.: «БХВ-Петербург»,
2011. – 592с. : ил.

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Додаток А
(Лістинг програми)
///Курсова робота «Обробка матриці» студента групи К-4-1 Гречки Дениса

#include <iostream>

//прототипи функцій користувача


void vived_MAS(int**, int);
void vved_MAS(int**, int);
void kilk_MAS(int**, int);
void sum_MAS(int**, int);
using namespace std;
// підключення простору імен для стандартних функцій вводу виводу
int main()
{
setlocale(LC_ALL, "");
std::cout << "\n\n";
std::cout << "\t\t == " << "Курсовa робота" << " ==" << "\
n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "на тему: Динамiчна матриця" << " =="
<< "\n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "студента групи К 4-1" << " ==" <<
"\n";
std::cout << "\t\t == ==" << "\n";
std::cout << "\t\t == " << "Гречки Дениса Євгеновича" << " =="
<< "\n";
std::cout << "\t\t";
char vidp = 'n'; //змінна для діалогів

int menu; // допоміжна змінна для меню


//Оглошення елементів меню

int i, j, n;
std::cout << "\n Вкажiть розмiр матрицi n x n n=";
std::cin >> n;
int** MAS = new int* [n];
for (i = 0; i < n; i++)
MAS[i] = new int[n];

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
label:
std::cout << " --------------------------------------------------------\n";

std::cout << " " << "| 1 * Введення елементiв матрицi \


n";
std::cout << " " << "| 2 * Кiлькiсть елементiв матрицi, якi знаходяться
в дiапазонi (-10, 10)\n";
std::cout << " " << "| 3 * Сума елементiв головноi дiагоналi
\n";
std::cout << " " << "| 4 * Виведення матрицi \n";

std::cout << " \n";

std::cout << "________________________________________________"


<< "\n\n";

std::cout << "Задайте елемент меню" << "\n\n";


std::cin >> menu;
switch (menu)
{

case 1:
{ vved_MAS(MAS, n); vived_MAS(MAS, n);
}; break;

case 2: {

std::cout << " Кiлькiсть елементiв, якi знаходяться в дiапазонi (-10,


10) = ";
std::cout << endl;
kilk_MAS(MAS, n);

}; break;

case 3: { std::cout << "Сума елементiв головноi діагоналi = ";


sum_MAS(MAS, n);
}; break;

case 4: { vived_MAS(MAS, n);


}; break;

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
default: std::cout << "Ви помилились……\n";
}

std::cout << "\n\n" << "Продовжити роботу програми? (y/n)\n";


std::cin >> vidp;
if (vidp == 'y') goto label;
exit(0);// вихід з программи якщо натиснуто 'n'
//}
}

//Функція користувача для введення даних матриці


void vved_MAS(int** MAS, int n)
{
std::cout << "\nВведення елементiв матрицi\n\n\n";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
std::cout << "\nВведiть елемент " << "[" << i << "]" << "[" <<
j << "]=";
std:cin >> MAS[i][j];
//std::cout << MAS[i][j];
}
std::cout <<
"_________________________________________________________";
std::cout << "\nЕлементи масиву успiшно введено\n\n\n";
}

void sum_MAS(int** MAS, int n)


{

int sum = 0;
for (int i = 0; i < n; i++)

for (int j = 0; j < n; j++)


if (i == j)
sum += MAS[i][j];

std::cout << sum;


"_________________________________________________________";
std::cout << "\n\n\n";

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
//Функція користувача визначення елементи діапазону
void kilk_MAS(int** MAS, int n)
{
int kilk_ = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)

if ((MAS[i][j] > -10) && (MAS[i][j] < 10))


kilk_++;

std::cout << kilk_ << endl; ;

}
//виведення матриці
void vived_MAS(int** MAS, int n)
{
cout << "Елементи матрицi\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cout << "[" << i << "]" << "[" << j << "]=" << MAS[i]
[j]<<"\n";
}
}

std::cout << "\


n__________________________________________________________________
_____";
}

Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата

You might also like