
- •Задания задание 1
- •Задание 2
- •Задание 3
- •3. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 4
- •Задание 5
- •Задание 6
- •6. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 7
- •Задание 8
- •Задание 9
- •Задание 10
- •Задание 11
- •Задание 12
- •Задание 13
- •17. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 19
- •19. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 20
- •Задание 21
- •Задание 22
- •22. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 23
- •Задание 24
- •Задание 25
- •Задание 26
- •Задание 27
- •Задание 28
- •Задание 29
- •Задание 30
- •Решения Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 6, 17, 19
- •Вариант 18
- •Вариант 20
- •Вариант 21
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26, 28
- •Вариант 27, 29.
- •Вариант 30
Вариант 16
Разработать классы complex и Array, позволяющие использовать их в следующей программе:
Complex x(1.3,4.2), y(4.0, 8.1), z(y); x.add(y); z.assign(plus(x,y)); z.print();
Array a1(10), a2(10); (a1[0]).assign(y); (a1[1]).assign(z); a2=a1; a2.print();
//Complex.h
#pragma once
class Complex {
private:
double re, im;
public:
Complex();
Complex(const Complex&);
Complex(double, double);
Complex& assign(const Complex&);
void print() const;
Complex& add(const Complex&);
friend Complex plus(const Complex&, 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::assign(const Complex& a) {
re = a.re;
im = a.im;
return *this;
}
Complex& Complex::add(const Complex& a) {
re += a.re;
im += a.im;
return *this;
}
void Complex::print() const {
cout << "re = " << re << " im = " << im << std::endl;
}
Complex plus(const Complex& a, const Complex& b) {
return Complex(a.re + b.re, a.im + b.im);
}
//Array.h
#pragma once
#include <iostream>
using std::ostream;
#include "Complex.h"
#define DEFAULT_SIZE 10
class Array {
Complex* arr;
int size = DEFAULT_SIZE;
public:
~Array();
Array();
Array(int);
Complex& operator[](const int);
Array& operator=(const Array&);
void print() const;
};
//Array.cpp
#include <iostream>
#include "Array.h"
Array::~Array() {
delete[]arr;
arr = nullptr;
}
Array::Array(int s) {
if (s <= 0)
throw -1;
size = s;
arr = new Complex[size];
}
Array::Array() {
size = DEFAULT_SIZE;
arr = new Complex[DEFAULT_SIZE];
}
Complex& Array::operator[](const int i) {
if (i < 0 || i >= size)
throw - 1;
else
return arr[i];
}
Array& Array::operator=(const Array& a) {
delete []arr;
size = a.size;
arr = new Complex[size];
for (int i = 0; i < size; i++)
arr[i].assign(a.arr[i]);
return *this;
}
void Array::print() const {
for (int i = 0; i < size; i++)
arr[i].print();
}
Вариант 6, 17, 19
Задание:
Разработать классы Point и Array, позволяющие использовать их в следующей программе:
Point p1(10,20), p2(40,25), p3(p1); cout<<p2.move(40,20)<<(p1+=p2); p3=-p2;
Array a1(10), a2(10); a1[0]=a1[1]=p2; a2=a1; cout<<(a1+a2);
Написать тексты h-файлов и cpp-файлов для классов Point и Array. Нарисовать диаграммы классов.
//main.cpp
#include "Array.h"
void main() {
Point p1(10, 20), p2(40, 25), p3(p1);
cout << p2.move(40, 20) << (p1 += p2);
p3 = -p2;
Array a1(10), a2(10);
a1[1] = Point(1, 2);
a1[0] = a1[1] = p2;
a2 = a1;
cout << (a1 + a2);
system("pause");
}
//Point.h
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point();
Point(const int, const int);
Point(const Point&);
Point& move(const int, const int);
Point& operator =(const Point&);
Point& operator +=(const Point&);
Point operator -() const;
friend ostream& operator <<(ostream&, const Point&);
};
//Point.cpp
#include "Point.h"
Point::Point() {
x = 0;
y = 0;
}
Point::Point(const int a, const int b) {
x = a;
y = b;
}
Point::Point(const Point& p) {
*this = p;
}
Point& Point::move(const int dx, const int dy) {
x += dx;
y += dy;
return *this;
}
Point& Point::operator =(const Point& p) {
x = p.x;
y = p.y;
return *this;
}
Point& Point::operator +=(const Point& p) {
x += p.x;
y += p.y;
return *this;
}
Point Point::operator -() const {
return Point(-x, -y);
}
ostream& operator << (ostream& s, const Point& r) {
s << "(" << r.x << ", " << r.y << ")";
return s;
}
//Array.h
#include "Point.h"
class Array {
private:
Point *pa;
int size;
public:
Array();
Array(const int);
Array(const Array&);
~Array();
Array& operator =(const Array&);
Point& operator [](const int) const;
Array operator +(const Array&) const;
friend ostream& operator <<(ostream&, const Array&);
};
//Array.cpp
#include "Array.h"
Array::Array() {
pa = NULL;
size = 0;
}
Array::Array(const int s) {
size = s;
pa = new Point[s];
for (int i = 0; i < s; i++)
pa[i] = Point();
}
Array::Array(const Array& a) {
*this = a;
}
Array::~Array() {
if (size > 0)
delete [] pa;
}
Array& Array::operator =(const Array& a) {
if (size > 0)
delete [] pa;
size = a.size;
pa = new Point[size];
for (int i = 0; i < size; i++)
pa[i] = a.pa[i];
return *this;
}
Point& Array::operator [](const int i) const {
if (i >= 0 && i < size)
return pa[i];
else
throw -1;
}
Array Array::operator +(const Array& a) const {
int newSize = 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;
}
ostream& operator <<(ostream& s, const Array& a) {
for (int i = 0; i < a.size; i++)
s << i << ": " << a.pa[i] << endl;
return s;
}