Контрольная работа по "Программированию на языке СИ++"

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 21:26, контрольная работа

Описание

Цель. Получить практические навыки реализации классов на C++.
Основное содержание работы. Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса «Цех». Выполнить исследование вызовов конструкторов и деструкторов.
Порядок выполнения работы.
1.Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).
2.Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

Работа состоит из  1 файл

Отчет.doc

— 107.50 Кб (Скачать документ)

   this->mas=(int*)realloc(&mas[0],(this->current size)*sizeof(int));

   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));

                                            for(int k=0;k<x->current_size;k++) tmp[k]=x->max[k];

                                            tmp[x->current_size++]=this->mas[i];

                                            x->max=(int*)realloc(&x->mas[0],(x-

>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(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:”,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_size);

           mas=(int*)realloc(&mas[0],(this->current_size)*sizeof(int));

           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->max_size)*sizeof(int));

                     for(int i=0;i<this->max_size;i++) tmp[i]=this->mas[i];

                     this->mas = (int*)realloc(&this->mas[0],(this-

>max_size)*sizeof (int));

                                     for(int i=0;i<this->max size;i++) this->mas[i] = tmp[i];                   

                                     free(&tmp[0]);

          }

          this->current_size=this->max_size;

}

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;

                      //Для дальнейшего изменения размера  массивов через realloc используем процедуру malloc

                     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){

                                       tmp=(T*)realloc(&tmp[0],(current+1)*sizeof(T));//Изменяем  размер временного массива

                                       for(i=0;i<this->current;i++) tmp[i] = this-

>mas[i];//Записываем во временный  массив данные

                                       tmp[this->current] = (*р);//3аписываем ???

                                       this->mas=(T*)realloc(&this->mas[0],(this->current+1)*sizeof(T));

                                       for(i=0;i<this->current+1;i++) this->mas[i] = tmp[i];

                                 } else this->mas[this->current] = (*p);

                                  this->current++;

                                  p++;

                        } 

                    free(&tmp[0]);

         }

         set(const set<T>& tmp){//Копирования

                   this->current=tmp.current;

                   this->mas = (T*)realloc(&mas[0],(current)*sizeof(T));

                      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)*sizeof(T));

                      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++)

                                 for(int j=0; j<op2.current;j++)

                                      if(this->mas[i] ==op2.mas[j]){

                                          tmp=(T*)realloc(&tmp[0],(x>current+1)*sizeof(T));

                                           for(int k=0; k<x->current; k++)  tmp[k]=x->mas[k];                          

                                           tmp[x->current++]=this->mas[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",&current);

mas = (T*)realloc(&mas[0],(current)*sizeof(T));

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)*sizeof(T));

for(int i=0;i<this->max_size;i++) tmp[i] = this->mas[i];

this->mas = (T*)realloc(&this->mas[0],(this->max_size)*slzeof(T));

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”);//Пользовательский класс

}




Информация о работе Контрольная работа по "Программированию на языке СИ++"