Читайте также:
|
|
#include "stdafx.h"
#include "matrix.h"
Matrix& Matrix::operator = (Matrix &x) {
setSize (x.m, x.n);
mat = new float[ x.m * x.n ];
float *m = x.mat;
for (int i = 0; i < x.m; i++) {
for (int j = 0; j < x.n; j++) {
*(mat + (i*n + j)) = *(m + (i*n + j));
}
}
return *this;
}
Matrix& operator + (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix (x.m, x.n);
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for (int i = 0; i < tmp->m; i++) {
for (int j = 0; j < tmp->n; j++) {
*(m + i*tmp->n + j) = *(mx + i*tmp->n + j) + *(my + i*tmp->n + j);
}
}
tmp->mat = m;
return *tmp;
}
Matrix& operator - (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix (x.m, x.n);
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for (int i = 0; i < tmp->m; i++) {
for (int j = 0; j < tmp->n; j++) {
*(m + i*tmp->n + j) = *(mx + i*tmp->n + j) - *(my + i*tmp->n + j);
}
}
tmp->mat = m;
return *tmp;
}
Matrix& operator * (Matrix &x, Matrix &y) {
Matrix *tmp = new Matrix (x.m, y.n);
float *m = new float[x.m * x.n];
float *mx = x.mat;
float *my =y.mat;
for (int i = 0; i < x.m; i++) {
for (int j = 0; j < y.n; j++) {
*(m + i*tmp->n + j) = 0;
for (int k = 0; k < x.n; k++) {
*(m + i*tmp->n + j) += (*(mx + i*tmp->n + k)) * (*(my + k*tmp->n + j));
}
}
}
tmp->mat = m;
return *tmp;
}
Создайте класс Shape (форма). Создайте от него производные классы Circle (окружность) и Cylinder(цилиндр). Класс Shape должен содержать чисто виртуальную функцию printShapeName (печатать имя формы). Эта функция должна переопределяться в каждом производном классе. Имена объектов производных классов должны выводиться на печать через указатель на базовый класс, то есть использовать свойства полиморфизма.
Дата добавления: 2015-07-16; просмотров: 35 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основной файл с ф-ией main | | | Заголовочный файл класса |