
- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу
- •Специфікатори доступу
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Приклад виконання завдання 3
- •Приклад виконання завдання 4
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Структура наслідування класів
- •Постановка задачі
- •Розробити клас трикутника, чотирикутника, кола, точки
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання
- •Завдання 1
- •Завдання 2
- •Завдання 3 Варіант 1. Задача “Банківське переведення” (дата, час, № рахунку, розмір рахунку).
- •Ітератори
- •Для роботи з вектором необхідно:
- •Приклад роботи з вектором
- •Алгоритми
- •Застосування алгоритмів до вектора
- •Приклад 1 виконання Завдання 1
- •Приклад 2 виконання Завдання 2
- •Приклад 3 виконання завдання №3
- •Контрольні запитання
- •Завдання 1
- •Теоретичні відомості Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання
- •Завдання 2.
- •Теоретичні відомості
- •Стандартні потоки для базових класів
- •Форматування даних при обмінах з потоками
- •Маніпулятори
- •Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Застосування алгоритмів до вектора
Для сортування можна застосувати стандартний алгоритм sort. Для його використання необхідно підключити файл заголовків алгоритмів.
# Include "algorithm"
Після чого можна сортувати, як весь вектор, так і окремі його частини:
vector <int> v1 (10);
vector <int> v2 (10);
for (int x = 0; x <v1.capacity (); x + +) v1 [x] = 10-x;
for (x = 0; x <v1.capacity (); x + +) v2 [x] = 10-x;
for (x = 0; x <v1.size (); x + +) cout << v1 [x] << "";
cout << endl;
for (x = 0; x <v2.size (); x + +) cout << v2 [x] << "";
cout << endl;
cout << "___________ SORT _____________" << endl;
sort (v1.begin (), v1.end ());
for (x = 0; x <v1.size (); x + +) cout << v1 [x] << "";
cout << endl;
sort (v2.begin () +1, v2.end () -1);
for (x = 0; x <v2.size (); x + +) cout << v2 [x] << "";
cout << endl;
Приклад 1 виконання Завдання 1
(з використанням ітератора)
Для даних типу char з використанням ітератора виконати таку послідовність дій:
1. Описання об'єкту класу
2. Ініціалізацію VECTORу
3. Виведення VECTORу
4. Сортування VECTORу
5. Виведення VECTORу
6. Визначення на кожному кроці поточного розміру VECTORу
7. Доповнення з заданої позиції у VECTOR
8. Видалення з заданої позиції у VECTOR
9. Сортування VECTORу
10. Виведення VECTORу
vector <char> ch; //об"являємо вектор символьного типу
cout << "\nEnter number of element =";
cin >> N;
// заповнюємо вектор символами з порядковими номерами після 60
for(I=0;I<N;I++)
{
ch.push_back(rand()%10+60);
}
cout << "\n\nNew vector\n";
for (I = 0; I<ch.size(); I++)
cout << ch[I] << " ";
cout << "\nCurrent size = "<<ch.size();
// сортуємо вектор
sort(ch.begin(),ch.end());
cout << "\nSorted vactor\n";
for (I = 0; I<ch.size(); I++)
cout << ch[I] << " ";
int pos_ins;
char new_elem;
cout << "\nEnter position when insert =";
cin >> pos_ins;
cout << "\nEnter new element value =";
cin >> new_elem;
vector <char>::iterator ch_p=ch.begin();
ch_p = ch_p+pos_ins;
// якщо вказано правильне місце вставки, вставляємо масив
if (pos_ins>=0 && pos_ins<=ch.size())
{
ch.insert(ch_p,1,new_elem);
}
for (I = 0; I<ch.size(); I++)
cout << ch[I] << " ";
cout << "\nEnter position when erase =";
cin >> pos_ins;
cout << "\nCurrent size = "<<ch.size();
cout << "\nErase element\n";
// якщо вказано правильне місце вставки, вставляємо масив
if (pos_ins>=0 && pos_ins<=ch.size())
{
ch.erase(ch.begin()+pos_ins,ch.begin()+pos_ins+1);
}
for (I = 0; I<ch.size(); I++)
cout << ch[I] << " ";
cout << "\nCurrent size = "<<ch.size();
return 0;
}
Приклад 2 виконання Завдання 2
В одномірному масиві, що складається з n елементів, обчислити: суму негативних елементів масиву; добуток елементів масиву, розташованих між максимальним і мінімальним елементами. Упорядкувати елементи масиву по зростанню.
Лістинг програми:
#include "stdafx.h"
#include <iostream.h>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
vector <int> v; //об"являємо вектор цілого типу
int I=0, N=0;
cout << "\nEnter number of element =";
cin >> N;
// заповнюємо вектор довільними числами
for(I=0;I<N;I++)
{
v.push_back(rand()%10-5);
}
// виводими вектор на екран
cout << "\n\nNew vector\n";
for (I = 0; I<v.size(); I++)
cout << v[I] << " ";
// знаходимо суму елементів вектора менше нуля
int sum=0;
for (I = 0; I<v.size(); I++)
if (v[I]<0)
sum +=v[I];
cout << "\nsum elementiv below 0 is "<<sum;
// знаходимо добуток елементів масиву,
// розташованих між максимальним і мінімальним елементами.
// об"являємо вказівник на максимальний елемент
vector<int>::iterator max_it = max_element(v.begin(), v.end());
// об"являємо вказівник на мінімальний елемент
vector<int>::iterator min_it = min_element(v.begin(), v.end());
vector<int>:: iterator p ;
long dob=1;
// визначаємо чи максимальний чи мінімальний елемент знаходиться в векторі першим
if (max_it>min_it)
{
for(p=min_it;p<=max_it;p++)
{
dob *=*p;
}
}
else
{
for(p=max_it;p<=min_it;p++)
{
dob *=*p;
}
}
cout << "\nDobutoc of negative elements is "<< dob<<"\n";
// сортуємо вектор
sort(v.begin(),v.end());
// виводимо вектор на екан
cout << "Sorted vector \n";
for (I = 0; I<v.size(); I++)
cout << v[I] << " ";