Int main(int argc, char* argv[])
{
return 0;
}
Заголовочный файл класса
#ifndef DATE_H
#define DATE_H
class Date {
private :
int d;
int m;
int y;
public :
Date () {
d = 1;
m = 1;
y = 1970;
}
Date (int td, int tm, int ty) {
d = td;
m = tm;
y = ty;
}
void setD ( int td ) { d = td; }
void setM ( int tm ) { m = tm; }
void setY ( int ty ) { y = ty; }
int getD ( void ) { return d; }
int getM ( void ) { return m; }
int getY ( void ) { return y; }
};
#endif
Заголовочный файл класса
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include "windows.h"
#include "Date.h"
class Employee {
private :
char surname[100];
char name[100];
Date a;
Date b;
public :
Employee () {
strcpy(surname, "");
strcpy(name, "");
}
};
#endif
5.Описать класс, реализующий тип данных “вещественная матрица” и работу с ними. Класс должен реализовывать следующие операции над матрицами: « + » , « - » , « * ».
// p5.cpp : Defines the entry point for the console application.
//
Основной файл с ф-ией main
#include "stdafx.h"
#include "matrix.h"
Int main(int argc, char* argv[])
{
Matrix a(2 ,2);
a.setDate();
Matrix b(2 ,2);
b.setDate();
Matrix s;
s = a * b;
s.toString ();
return 0;
}
Заголовочный файл класса
#ifndef MATRIX_H
#define MATRIX_H
#include <iostream.h>
class Matrix {
friend Matrix &operator + ( Matrix &x, Matrix &y);
friend Matrix &operator - ( Matrix &x, Matrix &y);
friend Matrix &operator * ( Matrix &x, Matrix &y);
private :
int i, j;
int m, n;
float *mat;
public :
Matrix &operator = ( Matrix &x );
Matrix ( ) {
m = 0;
n = 0;
}
Matrix ( int a, int b ) {
m = a;
n = a;
}
~Matrix ( ) {
delete mat;
}
void setSize ( int a, int b ) {
m = a;
n = a;
}
void setDate ( ) {
mat = new float[m*n];
for ( i = 0; i < m; i++ ) {
cout << "Enter stroku " << i + 1 << endl;
for ( j = 0; j < n; j++ ) {
cin >> *(mat + ( i*n + j ) );
}
}
}
void toString ( ) {
cout << "Output Matrix" << endl;
for ( i = 0; i < m; i++ ) {
for ( j = 0; j < n; j++ ) {
cout<< "[" << *(mat + ( i*n + j ) ) << "]";
}
cout << endl;
}
}
};
#endif
Файл реализации класса
#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;
}
6.Создайте класс Shape (форма). Создайте от него производные классы Circle (окружность) и Cylinder(цилиндр). Класс Shape должен содержать чисто виртуальную функцию printShapeName (печатать имя формы). Эта функция должна переопределяться в каждом производном классе. Имена объектов производных классов должны выводиться на печать через указатель на базовый класс, то есть использовать свойства полиморфизма.
Основной файл с ф-ией main
#include "stdafx.h"
#include <iostream.h>
class Shape {
public:
virtual void printShapeName ( ) {
cout << "Shape" << endl;
};
};
class Circle : public Shape {
public:
void printShapeName ( ) {
cout << "Circle" << endl;
};
};
class Cylinder : public Shape {
public:
void printShapeName ( ) {
cout << "Cylinder" << endl;
};
};
int main(int argc, char* argv[])
{
Shape *s = new Shape;
s->printShapeName();
Circle ci;
s = &ci;
s->printShapeName();
Cylinder cy;
s = &cy;
s->printShapeName();
return 0;
}
8. Описать класс “множество”, позволяющий выполнять основные операции – добавление и удаление элемента, пересечение, объединение и разность множеств.
Основной файл с ф-ией main
// p8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "many1.h"
int main(int argc, char* argv[])
{
Many a;
a.add ( 11 );
a.add ( 2 );
a.add ( 3 );
Many b;
b.add ( 11 );
b.add ( 22 );
b.add ( 33 );
Many s;
s = a - b;
s.print();
//s.print();
/*
a.del ( 1 );
a.del ( 2 );
a.add ( 33 );
a.add ( 36 );
cout << endl << endl;
a.print();
*/
return 0;
}
Заголовочный файл класса
#pragma once
class Many {
friend Many &operator | ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
a = x.q;
while ( a != 0 ) {
tmp->add ( a->ch );
a = a->ps;
}
a = y.q;
while ( a != 0 ) {
tmp->add ( a->ch );
a = a->ps;
}
return *tmp;
};
friend Many &operator & ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
List *b;
a = x.q;
while ( a != 0 ) {
b = y.q;
while ( b != 0 ) {
if ( a->ch == b->ch ) tmp->add ( a->ch );
b = b->ps;
}
a = a->ps;
}
return *tmp;
};
friend Many &operator - ( Many &x, Many &y) {
Many *tmp = new Many ( ) ;
List *a;
List *b;
bool t = false;
a = x.q;
while ( a != NULL ) {
b = y.q;
t = false;
while ( b != NULL ) {
if ( a->ch == b->ch ) t = true;
b = b->ps;
}
if ( !t ) tmp->add ( a->ch );
a = a->ps;
}
return *tmp;
};
private:
typedef struct st {
int ch;
struct st *ps;
} List;
List *p;
List *q;
List *m;
public:
Many ( ) {
p = NULL;
q = NULL;
m = NULL;
};
Many &operator = ( Many &x ) {
List *a;
a = x.q;
while ( a != NULL ) {
add ( a->ch );
a = a->ps;
}
return *this;
};
void add ( int val ) {
m = q;
while ( m != NULL ) {
if ( m->ch == val ) return;
m = m->ps;
}
q = new List;
q->ps = p;
p = q;
q->ch = val;
return;
};
void del ( int val ) {
List *n, *s;
m = q;
while ( m != NULL ) {
if ( m->ch == val ) {
if ( m == q ) {
p = m->ps;
delete m;
q = p;
m =q;
}
else {
s = m->ps;
delete m;
n->ps = s;
m = n;
}
}
n = m;
m = m->ps;
}
return;
};
void print ( ) {
cout << "Print" << endl;
m = q;
while ( m != NULL ) {
cout << m->ch << endl;
m = m->ps;
}
return;
};
};
