- •Методичні вказівки до лабораторних робіт по курсам
- •8.092402 “Інформаційні мережі зв'язку” Затверджено
- •Протокол № __ від ____
- •Упорядники: в. П. Степанов в. П. Пчелінов
- •Загальні положення
- •1 Організація введення і виведення даних та розв’язання задач з простою змінною
- •1.1 Мета роботи
- •1.2 Вказівки до організації самостійної роботи студентів
- •1.2.1 Використання операторів введення
- •For ( [ вир1; ] [ вир2] [; вир3 ] ) оператор;,
- •1.5 Контрольні питання
- •1.6 Варіанти індивідуальних завдань
- •2 Розв’язання задач c використанням одновимірних і двовимірних масивів
- •2.1 Ціль роботи Прищепити студентам навички розв’язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
- •2.2 Методичні рекомендації з організації самостійної роботи студентів
- •2.3 Використання покажчиків
- •Наиведемо програму з використанням покажчиків:
- •Int main ( )
- •Void main ( void )
- •2.4 Використання масивів і покажчиків
- •Приклад 2.4 Обчислити середнє значення позитивних елементів одновимірного масиву.
- •Int *pmas;
- •2.5 Масиви покажчиків
- •2.6 Контрольні питання
- •2.7. Варіанти індивідуальних завдань
- •3 Вирішування задач з використанням даних символьного типу
- •3.1 Ціль роботи Вивчення способів опису символьних типів даних і використання структур для обробки даних.
- •3.2 Методичні рекомендації з організації самостійної
- •Роботи студентів
- •3.2.1 Організація символьного введення - виведення
- •Device . Get (char_var);
- •3.2.2 Рядки як символьні масиви
- •3.2.3 Введення-виведення символьних масивів
- •Void main (void)
- •3.2.4 Основні функції обробки символьних типів
- •Void main (void)
- •Void del (char *st, int k, int n);
- •Void del(char *st, int, int);
- •Void main()
- •Void del(char *st,int k,int n)
- •[ Проміжки ] [знак числа] [ цифри].
- •Void main( )
- •Void main()
- •Void main()
- •Void main(void)
- •3.2 Контрольні питання і завдання
- •3.4 Варіанти індивідуальних завдань
- •4 Вирішувння задач з використанням даних типу структура
- •4.1 Ціль роботи Освоєння заходів розробки і налагодження програм з використанням
- •4.2 Методичні рекомендації з організації самостійної
- •Void main(void)
- •Void qsort (void *base , n , width,
- •Int (*fcmp) ( const void *elem1, const void *elem2) .
- •4.3 Контрольні питання
- •4.4. Індивідуальні завдання
- •5 Використання функцій при розробці програм
- •5.1 Ціль роботи
- •5.2 Методичні вказівки з організації самостійної роботи студентів
- •Void fun ( int p)
- •Void main ( )
- •Int main ( )
- •5.2.1 Використання покажчиків на функцію
- •Void main ( )
- •5.2.2 Використання масивів - параметрів функцій
- •Vоid sort (int mas [ 30 ]); .
- •Void sort ( int mas [ ], int n ) ; .
- •Void fun1 (char st [ 5]);
- •Void fun1 ( char st [5] )
- •Void fun2 ( int mat [ ] [10], int rows, int cols );
- •5.2.4 Звертання до функції і передача результату
- •Int main ( )
- •5.2.5 Перевантаження функцій
- •5.3 Контрольні питання
- •5.4 Варіанти індивідуальних завдань
- •6 Робота з файлами
- •6.1 Ціль роботи
- •6.2 Методичні вказівки по організації самостійної роботи
- •Void main ( )
- •Ifstream in ( ”file1") ;
- •Література і джерела
- •Загальні положення ...………………………………………………………….........3
- •Навчальне видання
- •8.092402 “Інформаційні мережі зв'язку”.
- •61726 Харків, просп. Леніна, 14.
1.5 Контрольні питання
1. Які правила запису програми мовою С++ ?
2. Які дані обробляються за допомогою мови С++ ?
3. Як задаються типи даних у С++ ?
4. Що таке константа в С++, приведіть приклади констант?
5. Що називається змінною в С++?
6. Як забезпечується організація введення- виведення ?
7. Як організується форматований висновок результатів ?
8. Для чого потрібні оператори умовного і безумовного переходу і як вони працюють ?
9. Як працює оператор switch ?
10. Які оператори циклу ви знаєте, як працює оператор циклу for ?
11. Які особливості роботи оператора циклу do і while ?
1.6 Варіанти індивідуальних завдань
Для приведених нижче варіантів необхідно скласти програму обчислення значення функцій при різних значеннях аргументів, заданих інтервалом зміни і величиною кроку.
![]()
1.
![]()
2.
![]()
3.
а=5; у=3 ;
4.
![]()
5.
![]()
6.
![]()
7.
![]()
8.
![]()
9.
![]()
10.
![]()
11.
![]()
12.
![]()
13.

![]()
14.
![]()
15.
![]()
x і a змінюються одночасно.
16. Обчислити функцію
![]()
а
- має початкове значення 0.1 і змінюється
одночасно с x с кроком
.
Підказка: використовується один цикл.
17. Обчислити функцію двох змінних
![]()
18. Обчислити функцію:
![]()
При якім значенні х функція буде найменшою.
19.
Підрахувати скільки разів функція
приймає негативне значення, якщо
.
20. Увести координати 10 крапок на площині і визначити, у якій із чвертей більше всього крапок.
21.
Увести п'ять наборів сторін трикутника
а, у, з і визначити для яких сторін висота
буде найбільшою.
Підказка:
де
![]()
22. Увести координати п'яти крапок і визначити яка з них потрапить в окружність з радіусом R і координатами центра (а, в).
Підказка:
рівняння окружності має вид:
![]()
23. Увести п'ять шестиразрядных цілих чисел і знайти для яких з них сума «лівих» трьох цифр більше суми «правих» трьох.
24. Підрахувати скільки разів функція
![]()
приймає
негативне значення, якщо
.
25. Обчислити функцію у вигляді формули
для
кожного значення i.
2 Розв’язання задач c використанням одновимірних і двовимірних масивів
2.1 Ціль роботи Прищепити студентам навички розв’язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
2.2 Методичні рекомендації з організації самостійної роботи студентів
При підготовці до роботи повторити способи уявлення й опису одновимірних і двовимірних масивів, використання індексованих змінних при обробці даних, організацію введення і виведення масивів, використання покажчиків [1, с.25-34, с.121-127; 2, c.43-69, c.70-78; 3, c.108-157, конспект лекцій ].
На відміну від задач, розглянутих у попередній лабораторній роботі, аргумент функції може бути заданий і іншим способом — у вигляді довільного набору значень.
Приклад 2.1 Обчислити функцію y = axi2 – sin xi, де x1=-1, x2=-0,93, x3=-0,49, x4=0, x5=1,13, x6=0,96, x7=1,75.
При розв’язанні такої задачі кожне з перерахованих значень треба ввести в пам'ять комп'ютера, для чого буде потрібно відповідна кількість комірок. Такий довільний ряд однотипних значень, яким привласнене одне загальне символічне ім'я (ідентифікатор), називається масивом. Окреме значення масиву називається його елементом, а місце розташування елементів у масиві визначається за допомогою його індексу. У пам'яті комп'ютера масив займає стільки комірок пам'яті, скільки в ньому елементів.
У схемі алгоритму розв‘язання задачі спочатку передбачається введення значень всіх елементів оброблюваного масиву x[n] (n =7 ). Число, укладене в дужки, визначає кількість елементів масиву. Нумерація елементів масиву починається з 0 і закінчується n –1 . Далі введені елементи використовуються при обчисленні функції, шляхом вказівки індексу відповідного елемента.
Схема алгоритму розв’язання цієї задачі і програма виглядають наступним чином:
//P2_1.CPP -обчислення значень функції
//
використання одновимірного масиву
#include
<iostream.h>

так
немає
main( )
{
const int n =7;
float x[n];
int i;
float a, y;
// Введення масиву
cout<< "Введіть значення масиву:" <<endl;
for ( i=0; i < n; i++)
{
cout << "x [" << i << "] = ";
cin >> x [ i ] ;
cout << x [ i ] << endl;
}
a = 10.5;
// Обчислення функції
for ( i = 0; i < n; i++)
{
y = a*x [ i ] * x [ i ] – sin ( x [ i ] )
. cout << "При значенні=" << x[i]
<< "y = " << y << endl;
}
}
При запису цього алгоритму у вигляді програми спочатку треба описати масив за допомогою оператора float x [n], ввести його значення в пам'ять комп'ютера, а потім робити необхідні обчислення.
У програмі, що реалізує даний алгоритм, для введення елементів масиву використовується оператор cin >> x [i] ;, перед цим оператором знаходиться підказка cout << "x [" << i << "] = "; і зазначен номер елемента x[i], значення якого треба ввести.
Особливість виконання оператора введення cin >> x[i] ; полягає в тому, що, зустрівши його в програмі, комп'ютер призупинить її виконання поки не буде введене значення елемента x[i] і натиснута клавіша Enter, після чого обробка програми буде продовжена. Зазначений оператор включений у цикл, реалізований оператором For, і повторюваний n разів, для забезпечення введення всіх елементів масиву.
Оскільки в мові С++ індексація елементів масиву починається з нуля, то масив float x[7] (n =7 ) із семи елементів включає індексовані елементи x[0], x[1], x[2] … x[6] і при цьому x[0] — звертання до першого елемента, x[1] — звернення до другого елемента масиву і т.д. Пропонована програма використовує два цикли: один — для введення масиву, інший — для обчислення функції. Ці операції можна виконати й в одному циклі, тоді програма буде мати вигляд:
// Р2_2.CPP — введення елементів одновимірного масиву
// і обчислення функції здійснюється в одному циклі
#include < iostream.h>
#include < math.h>
float a, y ;
main ( )
{
const int n =7;
float mas [ n ];
int i;
float a, y ;
a = 10.5;
for ( i = 0; i < n ; i++)
{
cout << "x [ " << i << "] = ";
cin >> x [ i ] ;
y = a * x[ i ]*x[ i ] - sin( x[ i ] );
cout << "При значенні =" << x[і] << " y= " << y << endl;
}
}
Така програма коротше попередньої, а виходить, переважніше.
Часто в задачах, розв'язуваних на комп'ютерах, масиви використовуються не як аргументи деякої функції, а самі є об'єктами обробки.
Приклад 2.2 Обробити відомість успішності групи студентів з 10 чоловік по програмуванню, підрахувавши середній бал групи і кількість відмінників.
Список оцінок представимо масивом МА[i] (i=0..9), і програма, що реалізує таку задачу, виглядає в такий спосіб :
// Р2_3.CPP — використання одновимірних масивів
// Визначення середнього бала групи і кількості відмінників
#include < iostream.h >
#include < math.h >
main ( )
{
const int n = 10; // розмірність масиву
float mas[n]; // опис одновимірного масиву
int i, k;
float s;
s = 0 ; // s - змінна для підсумовування оцінок групи
k = 0 ; // k - змінна для підрахунку кількості відмінників
for ( i=0; i < n; i++ )
{
cout << " mas [ " << i << "] = ";
cin >> mas [ i ] ;
cout << mas [ i ] << endl;
s = s + mas [ i ];
if ( mas[ i ] = = 5)
k =k+1;
}
cout << "Середній бал = " << s / float(n ) << endl;
cout << "Кількість відмінників =" << endl;
}
У цій програмі змінна s служить для обчислення суми оцінок групи, а змінна k — для підрахунку кількості відмінників. Перед обчисленням треба задати цим змінним початкового нульового значення. Оператор cout << " mas [ " << i << "] = "; усередині циклу виконує роль підказки про необхідність введення чергової оцінки, а наприкінці використовується для виведення результатів обчислення ( cout << "Середній бал"<< s / float (n) << endl; cout << "Кількість відмінників =" << endl;) .
Крім одновимірних масивів, тобто таких, де положення елемента визначається за допомогою одного індексу, у практиці розв’язання задач часто застосовуються багатовимірні масиви. У них положення елемента визначається шляхом запису декількох індексів. Найбільш широке поширення одержали двовимірні масиви, називані матрицями. Матриці являють собою порядковий запис декількох одновимірних масивів, наприклад:

Місце розташування кожного елемента визначається за допомогою двох індексів — номера рядка і номери стовпця, тобто порядкового номера в рядку.
Індекси таких масивів записуються в квадратних дужках. Наприклад, запис М[1] [2] вказує на елемент, що знаходиться в другому рядку і третьому стовпці, тобто маючий значення -20.5 (рахунок індексів починається з 0). Для перебору всіх елементів матриці при їхньому введенні-виведенні, а також при обробці в програмі варто передбачати організацію двох циклів: один — для завдання значень індексу рядків, інший -індексу стовпців.
Приклад 2.3 До кожного елемента вищенаведеної матриці M додати число 10.
// Р2_4.CPP — використання двовимірних масивів
// До кожного елемента матриці додати число 10.
#include < iostream.h >
main ( )
{
const int n = 3; // кількість рядків матриці
const int m = 5; // кількість стовпців матриці
float M [ n] [m];
int i, k;
float s;
s = 10 ;
cout << " Введіть значення масиву:" << endl;
// Введення значень двовимірного масиву
for ( i = 0; i < n; i++)
for ( k = 0; k < m; k ++)
{
cout << " M [ " << i << "] = " << "[ " << k << ]" ;
cin >> M [ i ] [ k ];
cout << M [ i ] [ k ] << endl;
M [ i ] [ k ] = M [ i ] [ k ] + s ; // Можна M [ i ] [ k ] + = s ;
}
cout << "Нове значення матриці :" << endl;
// Виведення матриці в природному вигляді
for ( i = 0; i < n; i++)
{
cout << endl;
for ( k = 0; k < m; k++)
cout << M [ i ] [ k ] << " ";
}
}
У програмі при описі матриці в операторі float M[n][m]; указується діапазон зміни двох індексів, перший з який призначений для індексування рядків, другий — стовпців.
При введенні, обробці і виведенні матриці для перебору всіх її елементів використовується два цикли, один із яких є вкладеним в іншій. Це дозволяє при кожнім значенні змінної i перебирати всі значення k.
Розглянута програма може бути скорочена шляхом об'єднання всіх трьох блоків циклу в один, але в такому випадку вона буде менш наочною.
