Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика(практика).doc
Скачиваний:
35
Добавлен:
09.02.2015
Размер:
122 Кб
Скачать
☆

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;

};

};