- •Загальні положення ...………………………………………………………….........3
- •Загальні положення
- •1 Організація введення і виведення даних та розв’язання задач з простою змінною
- •1.1 Мета роботи
- •1.2 Вказівки до організації самостійної роботи студентів
- •1.2.1 Використання операторів введення
- •#Define sp " "
- •Int main ( )
- •Int main ( )
- •Int main ( )
- •Void main ( )
- •For ( [ вир1 ]; [ вир2] ;[ вир3 ] ) оператор;,
- •Void main ( )
- •Void main ( )
- •1.5 Контрольні питання
- •1.6 Варіанти індивідуальних завдань
- •2 Розв’язання задач c використанням одновимірних і двовимірних масивів
- •2.1 Ціль роботи Прищепити студентам навички розв’язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
- •2.2 Методичні рекомендації з організації самостійної роботи студентів
- •Void main( )
- •Void main ( )
- •Void main ( )
- •Void main ( )
- •2.3 Використання покажчиків
- •Наиведемо програму з використанням покажчиків:
- •Int main ( )
- •Void main ( void )
- •2.4 Використання масивів і покажчиків
- •Приклад 2.4 Обчислити середнє значення додатних елементів одновимірного масиву.
- •Int *pmas;
- •2.5 Масиви покажчиків
- •Void main( )
- •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 [15]);
- •Int main ( )
- •Void fun1 ( char st[15] )
- •Void fun2 ( int mat [ ] [10], int rows, int cols );
- •Int main ( )
- •5.2.4 Звертання до функції і передача результату
- •Int main ( )
- •5.2.5 Перевантаження функцій
- •Int main ( )
- •5.3 Контрольні питання
- •5.4 Варіанти індивідуальних завдань
- •6 Робота з файлами
- •6.1 Ціль роботи
- •6.2 Методичні вказівки по організації самостійної роботи
- •Int main ( )
- •Int main ( )
- •Void main ( )
- •Ifstream in ( ”file1") ;
- •In.Close();
- •Перелік посілань
- •Навчальне видання
- •61726 Харків, просп. Леніна, 14.
5.2.2 Використання масивів - параметрів функцій
Як аргументи (параметрів) функцій можуть бути не тільки змінні, але і масиви. У цьому випадку можна використовувати як масиви фіксованого розміру, так і невизначеного (масиви змінної довжини). При використанні масивів фіксованої довжини в заголовку функції в списку формальних аргументів указується тип масиву і його розмір, наприклад:
Vоid sort (int mas [ 30 ]); .
Якщо описується функція з масивом змінної довжини, то в заголовку вказується тип масиву невизначеного розміру, і обов'язково ще один параметр, за допомогою якого задається розмірність масиву, наприклад:
Void sort ( int mas [ ], int n ) ; .
Усі масиви у функції передаються за адресою (як покажчики), тому у випадку зміни масивів у функції , ці зміни зберігаються при поверненні в зухвалу функцію.
Приклад 5.2 Навести приклад програмної реалізації , у якій відбувається передача символьного масиву у функцію .
//P5_2.CPP – використання масивів – параметрів функцій
#include < string.h >
#include < iostream >
using namespace std;
Void fun1 (char st [15]);
Int main ( )
{
char p[15] ="стіл ";
fun1 (p);
cout << "p=" << p << endl; // p="стілець "
return 0;
}
Void fun1 ( char st[15] )
{
cout <<"p=" << st << endl; // стіл
strcpy (st, "стілець ");
}
Результати виконання програми :
р=стіл
р=стілець
Як параметри функцій можна використовувати не тільки одновимірні, але і багатовимірні масиви. При цьому використовуються масиви як фіксованої розмірності, так і невизначеної довжини.
При використанні багатовимірного масиву фіксованого розміру в заголовку функції вказуються значення розмірностей масиву, наприклад:
void fun1 (int mat [7][10]); // використовується матриця mat(7,10)
Якщо використовується багатовимірний масив невизначеної довжини, то невизначеним може бути тільки один вимір розмірності, що повинен бути першим, наприклад:
Void fun2 ( int mat [ ] [10], int rows, int cols );
Приклад 5.3 Для заданої матриці зробити обчислення середнього значення кожного її стовпця з використанням функції введення розмірності матриці, функції введення матриці і функції одержання середнього значення стовпців.
// P5_3.CPP – обчислення середнього значення
// кожного стовпця матриці
#include < iostream >
using namespace std;
const int mincol = 1;
const int maxcol = 20;
const int minrow = 2;
const int maxrow = 30;
//Функція getnum ( ) для введення кількості рядків і стовпців
int getnum (const char *elemtype , int low , int high )
{
int n;
do
{
cout << " Введіть кількість " << elemtype
<< " N від [" << low << "] до [" << high << " ] : ";
cin >> n;
}
while (( n<low) || (n>high));
return n;
}
// Функція inmatr ( ) введення елементів матриці
void inmatr ( float matr [ ] [maxcol], int rows , int cols);
{
for (int i =0; i<rows; i++)
{
cout << "Введіть"<< i << "рядок матриці " << endl;
for ( int j =0; j < cols ; j++)
cin >> matr [i][j];
}
cout << endl;
}
// Функція srcols ( ) одержання середніх значень стовпців
void srcols ( float matr [ ] [maxcol] , int rows , int cols )
{
float sum , sr;
for ( int j = 0; j < cols; j++ )
{
sum =0.0;
for ( int i = 0; i < rows; i++)
sum += matr [i][j];
sr = sum / rows;
cout << "середнє значення стовпця" << j << " = " << sr << endl;
}
}
// Головна програма
int main ( )
{
float matr [maxrow] [maxcol];
int rows, cols;
// Уведення кількості рядків і стовпців
rows = getnum ( "rows", minrow, maxrow );
cols = getnum ( "colnums" , mincol , maxcol);
// Уведення матриці
inmatr ( matr, rows , cols);
// Обчислення середнього значення стовпців матриці
srcols (matr , rows , cols);
return 0;
}
5.2.3 Використання функції як параметра значень
Іноді приходиться як формальні аргументи (параметрів) функції використовувати інші функції. Така ситуація виникає, якщо в деякій функції при звертанні до неї, треба викликати іншу функцію.
Параметр - функція записується у вигляді прототипу, тобто вказується тип функції, її ім'я й у дужках перелік типів формальних аргументів, або типів і імен формальних аргументів.
Приклад 5.4 Скласти програму c використанням функції обчислення інтегралів методом трапецій (точність обчислення е =10-3 ).
// P5_4.CPP – обчислення інтеграла методом трапеції
// використання функції як параметра значення
#include <math.h>
#include < iostream >
using namespace std;
const float e =1 e-3;
float fn1 (float x ) // підінтегральна функція 1-го інтеграла
{
return sgrt (1 +log (x));
}
float fn2 ( float x ) // підінтегральна функція 2-го інтеграла
{
return log (1 +pow (x,2)) / (1+pow (x,2));
}
float ft (int n, float a ,float b , float fun( float )) // функція методу трапецій
{
int i;
float s1 ,h, s=0;
do
{ s1 =s;
h = (b -a ) /n;
s = ( fun (a) +fun (b) ) / 2;
for ( i = 1; i <= n-1; i++)
s += fun ( a + i *h );
s *= h; n *= 2;
} while ( fabs ( s-s1 ) > e );
return s; }