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

Вариант 2

Задание

Написать тексты h-файлов и cpp-файлов для классов Complex и Array (массив комплексных чисел). Описание классов:

Класс

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

Интерфейс

Complex

re, im

Конструкторы, функции assign, add, plus, операция <<

Array

pa, size

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

Привести примеры создания и использования объектов классов Complex и Array. Нарисовать диаграммы классов.

/*main.cpp*/

#include "Array.h"

int _tmain(int argc, _TCHAR* argv[])

{

Complex a(1, 1);

Complex b(2, -2);

Complex c(0, 0);

Complex d;

Complex e;

c.add(b);

d.assign(a);

e = a.plus(c);

Array arr(2);

Array arr1(2);

arr[0] = a;

arr[1] = b;

arr1[0] = c;

arr1[1] = d;

arr += arr1;

Array arr2 = arr + arr1;

std::cout << "Class Complex: " << endl;

std::cout << "a: " << a;

std::cout << "b: " << b;

std::cout << "c: " << c;

std::cout << "d: " << d;

std::cout << "e: " << e;

std::cout << "\nClass Array: " << endl;

std::cout << arr << endl;

std::cout << arr1 << endl;

std::cout << arr2 << endl;

system("pause");

return 0;

}

/*Complex.h*/

#include <iostream>

using namespace std;

class Complex

{

private:

int re;

int im;

public:

Complex();

Complex(const int, const int);

void assign(const Complex &);

void add(const Complex &);

Complex plus(const Complex &) const;

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

};

/*Complex.h*/

#include "Complex.h"

#include <iostream>

using namespace std;

Complex::Complex() {

this->re = 0;

this->im = 0;

}

Complex::Complex(const int re, const int im) {

this->re = re;

this->im = im;

}

void Complex::assign(const Complex & a) {

this->re = a.re;

this->im = a.im;

}

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

this->re += a.re;

this->im += a.im;

}

Complex Complex::plus(const Complex & b) const {

return Complex(this->re + b.re, this->im + b.im);

}

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

s << a.re;

if (a.im >= 0)

s << "+" << a.im << "j";

else

s << a.im << "j";

s << endl;

return s;

}

/*Array.h*/

#include "Complex.h"

class Array : Complex

{

private:

Complex* pa;

int size;

public:

int getSize() {

return size;

}

Array();

Array(const int);

Complex & operator[](const int) const;

Array operator +(const Array &) const;

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

void operator =(Array &);

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

};

/*Array.cpp*/

#include "Array.h"

Array::Array() {

pa = NULL;

size = 0;

}

Array::Array(const int size) {

this->size = size;

if (this->size > 0)

pa = new Complex[this->size];

for (int i = 0; i < this->size; i++)

pa[i] = Complex();

}

Complex & Array::operator[](const int index) const {

if (index < 0 || index > this->size) {

std::cout << "Error";

exit(1);

}

else

return pa[index];

}

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

int newSize = this->size + a.size;

Array newArr(newSize);

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

newArr.pa[i] = i < size ? pa[i] : a.pa[i - size];

return newArr;

}

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

int newSizeTempArr = a.size + b.size;

Complex *tempArr = new Complex[newSizeTempArr];

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

tempArr[i] = (i < a.size) ? a[i] : b[i - b.size];

delete[] a.pa;

a.size = newSizeTempArr;

a.pa = new Complex[a.size];

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

a[i] = tempArr[i];

delete[] tempArr;

return a;

}

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

this->pa = a.pa;

}

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

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

{

s << "array[" << i << "]" << arr[i];

}

return s;

}

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