
- •Лабораторна робота №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
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Приклад виконання завдання 1.
Варіант 1. Розробити функцію для виводу на екран усіх негативних елементів динамічного масиву і їх суми і кільксті.
Дана програма буде складатися з одного класу, що містить в собі конструктор, деструктор і дві функцій члени класу. Конструктор призначений для виділення динамічної пам’яті під масив, а деструктор – для звільнення динамічної пам’яті. Функція Vvod() призначена для вводу одномірного масиву з клавіатури, а функція Print() призначена для обробки масиву і виводу його на екран.
Клас буде мати наступну структуру:
class CNeg_elem{
float *masiv;
int kol;
int i;
int k,s;
public:
CNeg_elem();
~CNeg_elem();
void Vvod();
void Print();
};
Далі потрібно описати кожну з функцій, конструктор і деструктор. Головна програма буде містити зміну obj, за допомогою якої можна звертатися до функцій класу.
Програма буде мати наступний вигляд:
Лістинг програми:
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<malloc.h>
class CNeg_elem{
float *masiv;
int kol;
int i;
int k,s;
public:
CNeg_elem();
~CNeg_elem();
void Vvod();
void Print();
};
CNeg_elem::CNeg_elem()
{
cout<<"vvedite kilkist elementov masiva\nk= ";
cin>>k;
masiv=(float*)malloc(k*sizeof(float));
}
CNeg_elem::~CNeg_elem()
{
free(masiv);
}
void CNeg_elem::Vvod()
{
cout <<"vvedite element masiva\n";
for(i=0;i<k;i++)
{
cout<<"a["<<i<<"]=";
cin >>masiv[i];
}
}
void CNeg_elem::Print()
{
kol=0; s=0;
cout<<"\nnegativne element\n";
for(i=0;i<k;i++)
if(masiv[i]<0)
{
s=s+masiv[i];
kol++;
cout<<"\na["<<i<<"]="<<masiv[i];
}
cout<<"\n\nsuma="<<s;
cout<<"\nkolichestvo negativnih="<<kol;
}
void main()
{
clrscr();
CNeg_elem obj;
obj.Vvod();
obj.Print();
getch();
}
Тестування:
Для перевірки правильності роботи програми введемо в неї дані при введені, яких результат заздалегідь відомий.
Наприклад сформуємо масив з 6 елементів такого виду:
5 -3 -12 0 3 -1
З введених даних наочно видно, що від’ємними є 2,3 і 6 елемент. Сума їх =-16. Кількість 3.
Тепер введемо ці ж дані в програму і перевіримо результат.
vvedite kilkist elementov masiva
k= 6
vvedite element masiva
a[0]=5
a[1]=-3
a[2]=-12
a[3]=0
a[4]=3
a[5]=-1
negativne element
a[1]=-3
a[2]=-12
a[5]=-1
suma=-16
kolichestvo negativnih=3
Приклад виконання завдання 2.
Варіант 2. Розробити функцію для виводу на екран усіх негативних елементів кожного рядка двовимірного динамічного масиву і їх порядкових номерів.
Клас в даному завданні має таку ж структуру, що і клас із Завдання 2, відмінність є те, що тут використовується двомірний динамічний масив.
Клас буде мати наступну структуру:
class CNeg_elem{
int **masiv;
int i,j;
int n,m;
public:
CNeg_elem();
~CNeg_elem();
void Vvod();
void Print();
};
Лістинг програми:
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include<malloc.h>
class CNeg_elem{
int **masiv;
int i,j;
int n,m;
public:
CNeg_elem();
~CNeg_elem();
void Vvod();
void Print();
};
CNeg_elem::CNeg_elem()
{
cout<<"vvedite kilkist radkiv\nn= ";
cin>>n;
cout<<"vvedite kilkist stovptsiv\nn= ";
cin>>m;
for(i=0;i<n;i++)
masiv[i]=new int[m];
}
CNeg_elem::~CNeg_elem()
{
free(masiv);
}
void CNeg_elem::Vvod()
{
cout <<"vvedite element masiva\n";
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin >>masiv[i][j];
}
}
void CNeg_elem::Print()
{
cout<<"\nnegativne element\n";
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(masiv[i][j]<0)
cout<<"\na["<<i<<"]["<<j<<"]="<<masiv[i][j];
}
void main()
{
clrscr();
CNeg_elem obj;
obj.Vvod();
obj.Print();
getch();
}
Тестування:
Для перевірки правильності роботи програми введемо в неї дані при введені, яких результат заздалегідь відомий.
Наприклад сформуємо двомірний масив 4*3 такого виду:
-4 -7 0
3 7 -14
5 -5 10
17 19 20
З введених даних наочно видно, що від’ємними є [0][0],[0][1],[1][2] і [2][1] елемент.
Тепер введемо ці ж дані в програму і перевіримо результат.
vvedite kilkist radkiv
n= 4
vvedite kilkist stovptsiv
n= 3
vvedite element masiva
a[0][0]=-4
a[0][1]=-7
a[0][2]=0
a[1][0]=3
a[1][1]=7
a[1][2]=-14
a[2][0]=5
a[2][1]=-5
a[2][2]=10
a[3][0]=17
a[3][1]=19
a[3][2]=20
negativne element
a[0][0]=-4
a[0][1]=-7
a[1][2]=-14
a[2][1]=-5