Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 21:26, контрольная работа
Цель. Получить практические навыки реализации классов на C++.
Основное содержание работы. Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса «Цех». Выполнить исследование вызовов конструкторов и деструкторов.
Порядок выполнения работы.
1.Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).
2.Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.
this->mas=(int*)realloc(&mas[
for(int i=0;i<this->current_size;i++) this->mas[i] = tmp.mas[i];
this->max_size = tmp.max_size;
return *this;
}
set& operator*(const set& ор2){//Пересечение
set*x = new set; int *tmp;
x->mas = (int*)malloc(sizeof(int));
tmp=(int*)malloc(sizeof(int));
x->current_size=0;
x->max_size = 5;
for(int i=0;i<this->current_size;i++)
for(int j=0;j<op2.current_size;j++)
if(this->mas[i] == op2.mas[j]){
tmp = (int*)realloc(&tmp[0],(x-
>current_size+1)*sizeof(int));
>current_size+1)*sizeof(int));
for(int k=0;k<x->current_size;k++) x->mas[k]=tmp[k];
break;
free(&tmp[0]);
return *x;
}
bool operator > (const int& ор){//Принадлежность
for(int i=0;i<this->current_size;i++)
if(this->mas[i] == op) return true;
return false;
}
bool operator < (const set& tmp){//Подмножество
bool b;
for (int i=0;i<tmp.current_size;i++){
b = false;
for(int j=0;j<this->current_size;j++)
if(!b) return false;
}
return true;
}
~set(void){//Деструктор
free(&mas[0]);
}
void print(void){
printf(“Size: %i\nSet:”,this->current_size);
for(int i=0;i<this->current_size;i++) printf(“%i”,this->mas[i]);
printf(“\n”);
}
void input(void){
printf(“Enter
size of set:”); scanf(“%i”,&this->current_
mas=(int*)realloc(&mas[0],(
printf(“Enter set:”);
for(int i=0;i<this->current_size;i++) scanf(“%i”,&this->mas[i]);
}
void set_max_size(int max_size){
this->max_size = max_size;
if(this->current_size > this->max_size){
int*tmp=(int*)malloc((this->
for(int i=0;i<this->max_size;i++) tmp[i]=this->mas[i];
this->mas = (int*)realloc(&this->mas[0],(
>max_size)*sizeof (int));
}
this->current_size=this->max_
}
private:
int mах_size, current_size, *mas;
};
Приложение 2. Файл 10.срр
#include”set_int.h”
set A(1,2,3);//Конструктор с
set В(2,3,4);
set С(3,4,5);
void main(){
A.print(); B.print(); C.print();//Вывод множества на экран
(A*B*C).print();//Пересечение
}
Лабораторная работа №6
Цель. Получить практические навыки создания шаблонов и использования их в программах С++.
Основное содержание работы.
Создать шаблон заданного класса и использовать его для данных различных типов.
Порядок выполнения работы.
1.Создать шаблон заданного класса. Определить конструкторы, деструктор, перегруженную операцию присваивания (“=”) и операции, заданные в варианте задания.
2.Написать программу тестирования, в которой проверяется использование шаблона для стандартных типов данных.
3.Выполнить тестирование.
4.Определить пользовательский
класс, который будет
5.Написать программу тестирования, в которой проверяется использование шаблона для пользовательского типа.
6.Выполнить тестирование.
Приложение 1. Файл set.h
#include<inalloc.h>
#lnclude “ship.h”
template <class T> class set{
public:
set(void){//Конструктор без параметров
max_size = 5;
current = 0;
mas = (T*)malloc(sizeof(T));
}
set(int num, T n, …){//Конструктор с параметрами
T *p=&n; T *tmp; int i;
this->max_size=5; this->current = 0;
//Для дальнейшего изменения
this->mas = (T*)malloc(sizeof(T));
tmp = (T*)malloc(sizeof(T));
if(num>this->max_size) num = this->max_size;
//Считываем все
for(int i=0; i<=num;i++){
if(this- >current){
>mas[i];//Записываем во
}
free(&tmp[0]);
}
set(const set<T>& tmp){//Копирования
this->current=tmp.current;
this->mas = (T*)realloc(&mas[0],(current)*
for(int i=0;i<current;i++) this->mas[i] = tmp.mas[i];
this->max_size = tmp.max_size;
}
set& operator = (const set& tmp){//Присваивание
if(this==&tmp) return*this;
this->current = tmp.current;
this->mas = (T*)realloc(&mas[0],(current)*
for(int i=0; i<current; i++) this->mas[i] = tmp.mas[i];
this->max_size = tmp.max_size;
return *this;
}
set& operator * (const set& ор2){//Пересечение
set<T> *x = new set<T>; T *tmp;
x->mas=(T*)malloc(sizeof(T));
tmp=(T*)malloc(sizeof(T));
x->current=0;
x->max_size = 5;
for(int i=0;i<this->current; i++)
x->mas = (T*)realloc(&x->mas[0],
(x->current+1)*sizeof(T));
for(int k=0;k<x->current;k++) x->mas[k] = tmp[k];
break;
}
free(&tmp[0]);
return *x;
}
bool operator > (const T& ор){//Принадлежность
for(int i=0;i<this->current;i++)
if(this->mas[i] == op) return true;
return false;
}
bool operator < (const set& tmp){//Подмножество
bool b;
for(int i=0;i<tmp.current;i++){
b = false;
for(int j=0;j<this->current;j++)
if(this->mas[j] == tmp.mas[i]) b = true;
if(!b) return false;
}
return true;
}
~set(void){//Деструктор
free(&mas[0]);
}
void print(void){
printf("Size: %i\nSet: ",current);
for(int i=0;i<current;i++) printf("%i ",mas[i]);
prlntf("\n");
}
void input(void){
printf("Enter size of set: "); scanf("%i",¤t);
mas = (T*)realloc(&mas[0],(current)*
printf("Enter set: ");
for(int i=0;i<current;i++) scanf("%i",&mas[i]);
}
void set_max_size(int max_size){
this->max_size = max_size;
if(this->current > this->max_size){
T *tmp = (T*)malloc((this->max_size)*
for(int i=0;i<this->max_size;i++) tmp[i] = this->mas[i];
this->mas = (T*)realloc(&this->mas[0],(
for(int i=0;i<this->max_size;i++) this->mas[i] = trmp[ i ];
free(&tmp[0]);
}
this->current = this->max_size;
}
private:
T *mas;//Указатель на начало
int max_size;//Максимальный размер
int current;//Текущий размер
Приложение 2. Файл 10.срр
#include<stdio.h>
#include”set.h”
#include”ship.h”
set<int> s1(3, 1,2,3), s2(2, 2,3), s3;
set<ship> ss1(2,ship(1000, “TITANIK”, “PASSENGER”), ship(115, “St.George”, “MILITARY”));
ship ss2(1000, “TITANIK”, “PASSENGER”);
set<int> A(3, 1,2,3),B(3, 2,3,4),C(3, 3,4,5);
void main(){
(A*B*C).print();
s1.print();
s3.input();//Проверка ввода
(s1*s2).print();//Проверка
if(s1<s2) printf(“i n\n”);//Проверка подмножества
if(s1<s3) printf(“i n\n”); else printf(“out\n”);
if(s3>(int)2) printf(“in\n”); else printf(“out\n”);//Проверка вхождения
if(ss1>ss2) printf(“i n\n”); else printf(“out\n”);//
}
Информация о работе Контрольная работа по "Программированию на языке СИ++"