Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП Задачи.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
221.76 Кб
Скачать

Вариант 20

Класс

Элементы данных

Интерфейс

Complex

re, im

Конструкторы, операции +,+=(friend), =, <<

Array

pa, size

Конструкторы, функции assign, add, print,

операции =,==, <, <<

Complex.h

#pragma once

#include <iostream>

using std::ostream;

class Complex {

private:

double re, im;

public:

Complex();

Complex(const Complex&);

Complex(double, double);

Complex& operator=(const Complex&);

Complex operator+(const Complex&) const;

bool operator!=(const Complex&) const;

friend Complex& operator+=(Complex&, const Complex&);

friend ostream& operator<<(ostream&, const Complex&);

};

Complex.cpp

#include <iostream>

#include "Complex.h"

using std::cout;

Complex::Complex(double a, double b) {

re = a;

im = b;

}

Complex::Complex() : Complex(0, 0) {

}

Complex::Complex(const Complex& a) : Complex(a.re, a.im) {

}

Complex Complex::operator+(const Complex& a) const {

return Complex(re + a.re, im + a.im);

}

Complex& operator+=(Complex &a, const Complex& b) {

a.re += b.re;

a.im += b.im;

return a;

}

Complex& Complex::operator=(const Complex &a) {

re = a.re;

im = a.im;

return *this;

}

ostream& operator<<(ostream& s, const Complex& a) {

s << "Re = " << a.re << " Im = " << a.im << std::endl;

return s;

}

bool Complex::operator!=(const Complex& a) const {

return re != a.re || im != a.im;

}

Array.h

#pragma once

#include <iostream>

#include "Complex.h"

#define DEFAULT_SIZE 10

class Array {

Complex* pa;

int size = DEFAULT_SIZE;

public:

~Array();

Array();

Array(int);

Array& assign(const int, const Complex&);

Array& assign(const Array&);

void add(const Complex&);

void print() const;

Array& operator=(const Array&);

bool operator==(const Array&) const;

bool operator<(const Array&) const;

friend ostream& operator<<(ostream&, const Array&);

};

Array.cpp

#include <iostream>

#include "Array.h"

Array::~Array() {

delete[]pa;

pa = nullptr;

}

Array::Array(int s) {

if (s <= 0)

throw - 1;

size = s;

pa = new Complex[size];

}

Array::Array() {

size = DEFAULT_SIZE;

arr = new Complex[DEFAULT_SIZE];

}

Array& Array::assign(const Array& a) {

size = a.size;

delete[] pa;

pa = new Complex[size];

for (int i = 0; i < size; i++)

pa[i] = a.pa[i];

return *this;

}

Array& Array::assign(const int index, const Complex& a) {

if (index < 0 || index >= size)

throw - 1;

pa[index] = a;

return *this;

}

void Array::print() const {

for (int i = 0; i < size; i++)

std::cout << pa[i];

}

void Array::add(const Complex& a) {

Complex* temp = new Complex[size + 1];

for (int i = 0; i < size; i++)

temp[i] = pa[i];

temp[size] = a;

delete[] pa;

pa = temp;

size++;

}

Array& Array::operator=(const Array& a) {

size = a.size;

delete[] pa;

pa = new Complex[size];

for (int i = 0; i < size; i++)

pa[i] = a.pa[i];

return *this;

}

bool Array::operator==(const Array& a) const {

if (size != a.size)

return false;

for (int i = 0; i < size; i++) {

if (pa[i] != a.pa[i])

return false;

}

return true;

}

bool Array::operator<(const Array& a) const {

return size < a.size;

}

ostream& operator<<(ostream& s, const Array& a) {

a.print();

return s;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]