
- •Загальні положення
- •Розв’язання задач з простою змінною
- •1.1 Мета роботи
- •1.2 Методичні вказівки до організації самостійної роботи студентів
- •1.2.2 Структура програми
- •Використання оператора умовного переходу
- •If (а) оператор 1 ;
- •Оператори циклу
- •1.3 Контрольні запитання
- •1.4 Варіанти індивідуальних завдань
- •2 Розв’язання задач з використанням масивів
- •2.1 Мета роботи
- •2.2 Методичні вказівки до організації самостійної роботи студентів
- •Приклад 2.1 Знайти у масиві mas найменший елемент та його індекс.
- •Приклад 2.2 Відсортувати масив mas дійсних чисел розміром 10 елементів за зменшенням.
- •2.3 Контрольні запитання а завдання
- •3.4 Варіанти індивідуальних завдань
- •3 Робота з рядками
- •3.1 Мета роботи
- •3.2 Методичні вказівки до організації самостійної роботи студентів
- •3.3 Контрольні запитання та завдання
- •4 Робота зі структурами
- •4.1 Мета роботи
- •4.2 Методичні вказівки до організації самостійної роботи студентів
- •4.3 Контрольні запитання та завдання
- •4.4 Варіанти індивідуальних завдань
- •5 Використання функцій при розробці програм
- •5.1 Мета роботи
- •5.2 Методичні вказівки по організації самостійної роботи студентів
- •5.3 Контрольні запитання та завдання
- •5.4 Варіанти індивідуальних завдань
- •6 Пространства имен (поименованные области)
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Общие требования.
- •2.7 Контрольний приклад
- •7 Пошук і сортування
- •7.1 Мета роботи
- •7.2 Методичні вказівки до організації самостійної роботи студентів
- •7.2.1 Лінійний пошук
- •7.2.2 Пошук розподілом навпіл (двійковий пошук)
- •7.2.3 Сортування вставками
- •7.2.4 Метод пухирця
- •7.2.5 Сортування перерахуванням
- •7.2.6 Швидке сортування
- •7.2.7 Сортування злиттям
- •7.3 Контрольні запитання
- •Варіанти індивідуальних завдань
2 Розв’язання задач з використанням масивів
2.1 Мета роботи
Навчитися складати та реалізовувати у середовищі Visual C++ програми обробки масивів.
2.2 Методичні вказівки до організації самостійної роботи студентів
При роботі з масивами треба звернути увагу на введення та виведення даних. При програмуванні обов'язково треба використовувати покажчики. Покажчик — особливий тип даних, призначений для збереження адреси в пам'яті.
Робота з покажчиками значно прискорює виконання програми. Якщо до покажчика масиву mas, наприклад, додати значення 3, це призводить до отримання нового покажчика на четвертий (!) елемент масиву. При цьому перехід виконується у відповідності до типу масиву.
Тісний зв'язок з покажчиками має визначений у мові C++ тип даних – масив, або вектор. Масиви — це структурований тип даних, які представляють собою безупинні блоки пам'яті, що містять безліч елементів того самого типу. Ознакою масиву при описі є наявність парних дужок — “[ ]”. Елементи масива нумеруються з 0. Наприклад:
int mas1[21]; char mas2[67];
де оголошені вектор mas1, що містить 21 елемента типу int і вектор mas2, що містить 67 елементів типу char.
У C++ дозволені два способи доступу до елементів вектора: з використанням механізму покажчиків і класичний — за допомогою індексу.
Застосування механізму покажчиків засновано на використанні факту, що ім'я вектора є покажчиком – константою, що дорівнює адресі початку вектора - першого байта першого елемента вектора (mas1==&mas1[0]). У результаті цього, використовуючи операцію разіменування «*» можна забезпечити доступ до будь – якого елемента вектора. Так, еквівалентними будуть звертання до i-го елементу вектора з використанням індексу — mas1[i] і посилання *(mas1+i), оскільки (mas1+i)==& mas1[i].
Багатомірні масиви в С++ представляються у виді векторів покажчиків на вектори - багатомірні вектора.
Використання механізму покажчиків для доступу до деякого і,j,k-го елементу тривимірного вектора може бути таким:
b[і][j][k]= = *(b[і][j]+k)= =*(*(b[і]+j)+k)= =*(*(*(b+і)+j)+k) .
У цих звертаннях використаний той факт, що, ім'я багатомірного вектора є покажчиком – константою на вектор покажчика - констант вектора рядка, перший елемент якого є теж покажчик- константа рядка. Елементи багатомірних векторів зберігаються в пам'яті в порядку зростання самого правого індексу – по рядках, тобто останній індекс змінюється швидше.
Приклад 2.1 Знайти у масиві mas найменший елемент та його індекс.
#include <iostream.h>
#include <conio.h>
void main()
{
const int n=5;
int mas[n];
cout<<"Vvedit "<<n<<" elemetiv massivu "<<endl;
int i;
for(i=0;i<n;i++)
cin>>mas[i];
int imin=0;
for(i=1;i<n;i++)
if (mas[imin]>mas[i])
imin=i;
cout<<"min="<<mas[imin]<<"\tindex="<<imin<<endl;
getch();//задержка экрана
}
Приклад 2.2 Відсортувати масив mas дійсних чисел розміром 10 елементів за зменшенням.
#include <iostream.h>
#include <сonio.h>
void main()
{
int i, j;
float mas [10], rab;
cout<<"Vvеdі 10 elem \n";
for ( i=0; i<10; i++)
cin>>mas[i]; // cin>>*(mas+i);
cout<< " Isxodnik\n";
for( i=0; i<10; i++)
cout<<mas[i]; // cout<<*(mas+i)<<" ";
cout<<"\n"; // cout<<endl;
// Сортировка по убыванию
for (i=1; i<10; i++)
for (j=0;j<i;j++)
if(mas[j]<mas[j+1]) // if(*(mas+j) <*(mas+j+1))
{ rab= mas[j]; // { rab=*(mas+j);
mas[j] =mas[j+1]; // *(mas+j)=*(mas+j+1);
mas[j+1]=rab;} // *(mas+j+1)=rab; }
// Вывод результата
cout<< " Otsort massiv\n"<<"\n";
for (i=0; i<10; i++)
cout<< mas[i]<<” ”; // cout<<*(mas+i)<<" ";
getch(); //задержка экрана
}
Приклад 2.3 В багатовимірному масиві matr розміром 5*6 знайти суму елементів кожного рядка. Отриманий масив відсортувати за зростанням.
#include <iostream.h>
#include <conio.h>
void main()
{int i,j,sum,stk;
int matr[5][6], mas[5];
cout<<"Input matr\n";
// Ввод матрицы
for(i=0; i<5; i++)
for(j=0; j<6; j++) cin>> *(*(matr+i)+j);
// Определение суммы элементов строк
for(i=0; i<5; i++)
{sum=0;
for(j=0; j<6; j++)
sum+=*(*(matr+i)+j); *(mas+i)=sum;}
cout<< "Result mas\n";
for(i=0; i<5; i++)
cout<< *(mas+i)<<" ";
// Сортировка вектора mas по возрастанию
for( i=1; i < 5; i++)
for( j=0; j < 5-i; j ++)
if (*(mas+j)> *(mas+j+1))
{stk=*(mas+j); *(mas+j)= *(mas+j+1); *(mas+j+1)=stk;}
// Вывод отсортированного массива
cout<< "Result otsortirov mas\n";
for( i=0; i<5; i++)
cout<< *(mas+i)<<" ";
getch(); }
Приклад 2.4 Створити динамічний масив з n елементів (значення n ввести с клавіатури). Знайти кількість від’ємних елементів масиву.
#include <iostream.h>
#include <conio.h>
void main()
{
int n,i;
int *mas;
cout<<"Vvedit kilkist' strok (n)"<<endl;
cin>>n;
mas=new int[n];//створюємо динамічний масив
//Введення масиву
for(i=0;i<n;i++)
cin>>mas[i];
int kil(0);
//Підраховуємо кількість від’ємних елементів
for(i=0;i<n;i++)
if(mas[i]<0)
kil++;
cout<<"kil="<<kil<<endl;
delete [] mas; //вивільнюємо пам’ять
getch();
}
Приклад 2.5 Створити динамічний масив з n строк та m стовпців (значення n та m ввести с клавіатури). Знайти суму парних елементів масиву.
#include <iostream.h>
#include <conio.h>
void main()
{
int n,m,i;
int **mas;
cout<<"Vveditе kilkist' strok (n) i stolbcov (m)"<<endl;
cin>>n>>m;
//створюємо динамічний масив
mas=new int*[n]; //створюємо масив покажчиків
for(i=0;i<n;i++)
mas[i]=new int[m]; //створюємо динамічні строки
cout<<"Vveditе elementi massiva"<<endl;
//заповнюємо масив з клавіатури
for(i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>mas[i][j];
// Виведення на экран вихідного мисиву
for(i=0;i<n;i++,cout<<endl)
for(int j=0;j<m;j++)
cout<<mas[i][j]<<"\t";
int sum(0);
//Підраховуємо суму парних елементів
for(i=0;i<n;i++)
for(int j=0;j<m;j++)
if(mas[i][j]%2==0)
sum+=mas[i][j];
cout<<"sum=="<<sum<<endl;
// вивільнюємо пам’ять
for(i=0;i<n;i++)
delete[]mas[i];//вивільнюємо строки
delete []mas; //вивільнюємо масив покажчиків
getch();//затримка екрану
}