Вы находитесь на странице: 1из 8

Курс: Объектно-ориентированное программирование на C++

Тема: Перегрузка операторов

Задания для самостоятельной работы:

Задание 1
Создайте класс Дробь (или используйте уже ранее созданный
вами). Используя перегрузку операторов реализуйте для него
арифметические операции для работы с дробями (операции +, -,
*, /).

Задание 2
Создать класс Overcoat (верхняя одежда) Реализовать
перегруженные операторы:
1. Проверка на равенство типов одежды (операция = =);
2. Операцию присваивания одного объекта в другой
(операция =);
3. Сравнение по цене двух пальто одного типа (операция>).
Задание 3
Создать класс Flat (квартира). Реализовать перегруженные
операторы:
1. Проверка на равенство площадей квартир (операция ==);
2. Операцию присваивания одного объекта в другой
(операция =);
3. Сравнение двух квартир по цене (операция>)

1. #define_CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <time.h>
#include <cmath>
#include <math.h>
#include <string.h>
using namespace std;

class Fraction {
float x, y;
public:
void Set(int _x, int _y) {
if (_x > _y) {
for (int i = _y; i > 1; i--)
if (_y % i == 0 && _x % i == 0) {
_y = _y / i;
_x = _x / i;
i = _y;
}
x = _x;
y = _y;
}
else if (_y > _x) {
for (int i = _x; i > 1; i--)
if (_y % i == 0 && _x % i == 0) {
_y = _y / i;
_x = _x / i;
i = _x;
}
x = _x;
y = _y;
}
else {
y = 1;
x = 1;
}

float operator +(Fraction drob) {

return (x * drob.y + drob.x * y) / (y * drob.y);


}

float operator -(Fraction drob) {

return (x * drob.y - drob.x * y) / (y * drob.y);


}

float operator *(Fraction drob) {

return (x * drob.x) / (y * drob.y);


}

float operator /(Fraction drob) {

return (x * drob.y) / (y * drob.x);


}
};
int main() {
setlocale(LC_ALL, "ukr");

float a, b, a1, b1;


cin >> a >> b >> a1 >> b1;

if (a == 0 || a1 == 0 || b == 0 || b1 == 0) {
cout << "Error";
return 1;
}

Fraction ab;
Fraction a1b1;

ab.Set(a, b);
a1b1.Set(a1, b1);

cout << ab + a1b1 << " " << ab - a1b1 << " " << ab * a1b1
<< " " << ab / a1b1 << " " << endl;

return 0;
}

2. #define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <time.h>
#include <cmath>
#include <math.h>
#include <string.h>
using namespace std;

/*Создать класс Overcoat (верхняя одежда) Реализовать


перегруженные операторы:
1. Проверка на равенство типов одежды (операция = =);
2. Операцию присваивания одного объекта в другой (операция =);
3. Сравнение по цене двух пальто одного типа (операция>).
*/

class Overcoat {
char str[20];
int price;

public:

Overcoat(char* s) {
strcpy(str, s);
}
void setPrice(int k) {
price = k;
}

bool operator ==(Overcoat cloth) {


if (strcmp(this->str, cloth.str))
return 0;
return 1;
}

void operator =(Overcoat cloth) {

strcpy(str, cloth.str);
price = cloth.price;
}

int operator >(Overcoat cloth) {


if (this->price < cloth.price)
return -1;
else if (this->price > cloth.price)
return 1;
else {
return 0;
}

};
int main() {

setlocale(LC_ALL, "ukr");

Overcoat a((char*)"coat");
Overcoat a1((char*)"coat1");

a.setPrice(100);
a1.setPrice(101);

cout << "Назва " << (a == a1) << "\nЦіна " <<(a>a1) <<endl;
a = a1;

return 0;
}

3. #define_CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <time.h>
#include <cmath>
#include <math.h>
#include <string.h>
using namespace std;

/*Создать класс Flat (квартира). Реализовать перегруженные


операторы:
1. Проверка на равенство площадей квартир (операция ==);
2. Операцию присваивания одного объекта в другой (операция =);
3. Сравнение двух квартир по цене (операция>)
*/

class Overcoat {
int price, square;
public:

Overcoat(int s, int p) {
price = p;
square = s;
}
bool operator ==(Overcoat cloth) {

if (square != cloth.square)
return 0;
return 1;
}

void operator =(Overcoat cloth) {

square = cloth.square;
price = cloth.price;
}

int operator >(Overcoat cloth) {


if (this->price < cloth.price)
return -1;
else if (this->price > cloth.price)
return 1;
else {
return 0;
}

};

int main() {

setlocale(LC_ALL, "ukr");
Overcoat a(30, 18000);
Overcoat a1(30, 19000);
cout << "Площа " << (a == a1) << "\nЦіна " <<(a>a1) <<endl;
a = a1;

return 0;
}

Вам также может понравиться