- •Звіт з навчальної практики з об’єктно-орієнтованого програмування
- •Індивідуальне завдання 1
- •Текст програми
- •Індивідуальне завдання 2
- •Текст програми
- •Індивідуальне завдання 3
- •Текст програми
- •Індивідуальне завдання 4
- •Текст програми
- •Індивідуальне завдання 5
- •Текст програми
- •Тема 2. Конструктори. Деструктори.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 3. Дружні функції і класи.
- •Індивідуальне завдання 1
- •Текст програми
- •Тема 4. Превантаження операцій.
- •Індивідуальне завдання 1
- •Текст програми
Тема 3. Дружні функції і класи.
Мета: Вивчити призначення та використання дружніх функцій і класів.
Індивідуальне завдання 1
Створити два класи вектор (double *) і матриця (double **). Визначити конструктори - за умовчанням, з параметром, для класу матриця з двома параметрами, копіювання, деструктори. Визначити функцію множення матрицю на вектор як дружню.
Текст програми
#include <iostream.h>
class vector;//створюємо класи
class matrix
{
friend void mult(matrix &array,vector &vect_obj,int n,int m); //оголошуємо дружню функцію
public:
matrix(){};
int n,m;
double **matr;
matrix(int n,int m) // заповнення матриці
{
matr= new double*[n];
for (int i = 0; i < n; i++)
matr[i] = new double[m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) {
matr[i][j]=rand()%10+1;
} };
void vuvod(matrix &obj,int n,int m) // виводимо матрицю
{
int i,j;
cout <<endl;
for(i=0; i<n; i++){
cout <<endl;
for(j=0; j<m; j++)
cout<<"\t"<<matr[i][j];}
} ;
};
class vector // ВЕКТОР
{
friend void mult(matrix &array,vector &vect_obj,int n,int m);
public:
int val;
double *vect;
vector(vector& i):val(i.val)
{
vect=new double[val];
};
vector(int m)
{//заповнюємо вектор
val=m;
vect=new double[val] ;
for (int i=0; i < val; i++)
{
vect[i]=rand()%10+1;
}
};
void vuvod(vector &obj) // виводимо вектор на екран
{
int j;
cout <<endl;
for(j=0; j<val; j++)
cout<<"\t"<<vect[j];
}
} ;
void mult(matrix &array,vector &vect_obj,int n,int m)
{ // моження вектора на матрицю
vector result(vect_obj);
for(int i=0;i<n;i++)
{
result.vect[i]=0;
for(int j=0;j<m;j++)
{
result.vect[i]+=array.matr[i][j] * vect_obj.vect[i]; // множення
}
}
cout<<"\nUmnozenie (matrica*vector)\n" ;
result.vuvod(result) ; // виводимо результат
};
int main()
{
int m;
srand(time(NULL));
cout<<"Razmer matricy -> " ;
cin>>m;
matrix array(m,m);
vector vect_obj(m);
cout<<"Matrica";
array.vuvod(array,m,m);
cout<<"\n\nVector ";
vect_obj.vuvod(vect_obj);
mult(array,vect_obj,m,m);
cout <<endl;
system ("PAUSE");
}
Результат роботи програми:
Рисунок 3.1
Тема 4. Превантаження операцій.
Мета: Вивчити принципи використання та роботи перевантаження операцій.
Індивідуальне завдання 1
Створити клас дійсних чисел Double. Визначити перевантажену функцію, що повертає максимальне з двох аргументів. Функція не є членом класу Double. Перевантажені функції мають аргументи типу int, double, Double. Тіло перевантажених функцій повинні бути однаковим.
Текст програми
#include <iostream.h>
#include <conio.h>
class Double{ // оголошуємо клас
public:
Double(double a,double b){
this->a=a;
this->b=b;
}
double a,b;
};
double Max(double a,double b){
if(a<b) return b; else return a;//перегрузка
}
double Max(int a,int b){
if(a<b) return b; else return a;
}
void main(){
double a,b;
cin>>a>>b;
clrscr();
Double var(a,b);
cout<<"Max="<<Max(var.a,var.b); // виводимо більше число на екран
getch();
}Результат роботи програми:
Рисунок 4.1
