Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 21:26, контрольная работа
Цель. Получить практические навыки реализации классов на C++.
Основное содержание работы. Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса «Цех». Выполнить исследование вызовов конструкторов и деструкторов.
Порядок выполнения работы.
1.Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).
2.Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.
Министерство образования и науки
Сарапульский политехнический институт (филиал)
Государственного
Высшего профессионального образования
«Ижевский государственный технический университет»
Кафедра КИПР
КОНТРОЛЬНАЯ РАБОТА
по дисциплине: Программирование на языке СИ++
Выполнит студент группы 261ЗДУ Пастухов Р.В.
Проверил преподаватель
Сарапул 2010
Лабораторная работа №1.
Цель. Получить практические навыки реализации классов на C++.
Основное содержание работы.
Написать программу, в
которой создаются и
Порядок выполнения работы.
1.Определить пользовательский
класс в соответствии с
2.Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.
3.Определить в классе деструктор.
4.Определить в классе компоненты-функции для просмотра и установки полей данных.
5.Определить указатель на компоненту-функцию.
б.Определить указатель на экземпляр класса.
7.Написать демонстрационную
программу, в которой
8.Показать в программе
использование указателя на
Приложение 1 Файл ceh.h
#ifndef ceh_h
#define ceh_h
class ceh{//Объявление цеха
public:
ceh();//Конструктор без параметров
cehf(char *n1, char *n2, int n3);//Конструктор с параметрами
ceh(const ceh& op2);//Конструктор копирования
~ceh();
ceh& operator=(const ceh& op2);//Оператор присваивания (аналогично копированию) х=у
void show();//Функция вывода на экран
void input();//Функция ввода
private:
char name[25], nach[25];//Имя и начальник
int num;//Количество работающих
};
#endif
Файл ceh.cpp
#include "ceh.h"
#include <string>
ceh::ceh(){//Конструктор без параметров ceh x;
printf("Call constructor\n");
this->name[0] = NULL; this->nach[0] = NULL; this->num =0;
}
ceh::ceh(char *n1, char *n2, int n3){//Конструктор с параметрами ceh x(...)
strcpy(this->name, n1); strcpy(this->nach, n2); this->num = n3;
}
ceh::ceh(const ceh& op2){//Конструктор копирования
ceh x = у
strcpy(this->name, op2.name); strcpy(this->nach, op2.nach); this->num = op2.num;
}
ceh::~ceh(){//Деструктор
printf("Call destructor\n");
}
ceh& ceh::operator = (const ceh& op2){//Оператор присваивания (аналогично копированию) х = y
strcpy(this->name, op2.name); strcpy(this->nach, op2.nach); this->num = op2.num;
return *this;
}
void ceh::show(){//Вывод на экран
printf("Name: %s\nNach: %s\nNumber of workers: %i\n\n",this->name, this->nach,
this->num);
}
void ceh::input(){//3aпись данных
printf("Input name: "); scanf("%s",this->name); printf("Input nach: "); scanf("%s",this->nach);
printf("Input number: "); scanf("%i",&this->num);
}
Приложение 2 Файл.срр
#include "ceh.h"
ceh c1; //Вызов конструктора без параметров
ceh c2("Avia", "Gorbunov", 150); //Вызов конструктора с параметрами
ceh с3[3] = {ceh(“Mulitary", "Popov", 140), ceh("HQ","Ovechkin",132), ceh("System", "Himkin"., 164)};
ceh c4 = c2; //Вызов конструктора копирован
void main(){
ceh *c = new ceh[2];// Массив цех размещается в динамической памяти
c1.input();
c1.show();
c3[1].show();
с[0] = сЗ[2];с[1] = с4;
c[1].show();//Использование
void (ceh::*pf)();
pf=&ceh::show;
c3[0].*pf)();//Вызов функции
}
Лабораторная работа №2
Цель. Получить практические навыки создания иерархии классов и использования статических компонентов класса.
Основное содержание работы.
Написать программу, в которой создается иерархия классов. Включить полиморфные объекты в связанный список, используя статические компоненты класса. Показать использование виртуальных функций.
Порядок выполнения работы.
1.Определить иерархию
классов (в соответствии с
2.Определить в классе статическую компоненту - указатель на начало связанного списка объектов и статическую функцию для просмотра списка.
3.Реализовать классы.
4.Написать демонстрационную
программу, в которой
5.Сделать соответствующие методы не виртуальными и посмотреть, что будет.
6.Реализовать вариант, когда объект добавляется в список при создании, т.е. в конструкторе.
Перечень классов: квитанция, накладная, документ, чек
Приложение 1 Файл document.h
#ifndef document_h
#define document_h
class document{//Базовый класс
public:
virtual void add() = 0;//Чистая виртуальная функция добавления элемента в список
virtual void show() = 0;//Чистая виртуальная
функция просмотра элемента спи
static void print();//Статическая функция для просмотра списка
protected:
char name[25];
document *пеxt;//Указатель на
};
class kvit: virtual public document{//Производный класс квитанция
public:
kvit();// конструктор по умолчанию
kvit(char *n, int s);
kvit(const kvit& tmp); // конструктор копирования
virtual ~kvit();// виртуальный деструктор
void add();
void show();// чистая виртуальная функция
private:
int sum;//Количество мест
};
class nakl: virtual public document{//Производный класс накладная
public:
nakl();
nakl(char *n, int s);
nakl(const nakl& tmp);
virtual ~nakl();
void add();
void show();
private:
int sum;
};
class check: virtual public document{//Производный класс чек
public:
check();
check(char *n, int s);
check(const check& tmp);
virtual ~check();
void add();
void show();
private:
int sum;
};
#endif
Файл document.cpp
#include "document.h"
#include <stdio.h>
#include <string.h>
kvit::kvit(char *n, int s){
strcpy(this->name, n); this->sum = s;
}
kvit::kvit(const kvit& tmp){
strcpy(this->name, tmp.name); this->sum = tmp.sum;
}
kvit::~kvit(){
}
void kvit: :аdd(){//Добавление элемента в список
this->next - document::begin; //2 элементом в списке является текущее начало
document::begin = this; //Задаем новое начало списка
}
void kvit::show(){//Вывод на экран документа
printf("Name: %s\nSum: %i\n\n",this->name, this->sum);
}
nakl::nakl(char *n, int s){
strcpy(this->name, n); this->sum = s;
}
nakl::nakl(const nakl& tmp){
strcpy(this->name, tmp.name); this->sum = tmp.sum;
}
nakl::~nakl(){
}
void nakl::add(){
this->next = document::begin;
document::begin = this;
}
void nakl::show(){
printf("Name: %s\nSum: %i\n\n",this->name> this->sum);
}
check::check(char *n, int s){
strcpy(this->name, n); this->sum - s;
}
check::check(const checks tmp){
strcpy(this->name, tmp.name); this->sum = tmp.sum;
}
check::~check(){
}
void check::add(){
this->next = document::begin;
document::begin = this;
}
void check::show(){
printf("Name: %s\nSum: %i\n\n",this->name, this->sum);
}
Приложение 2 Файл.срр
#include "document.h"
document *document::begin = 0;//Инициализация вне класса
void document: :print(){//Просмотр списка
document *tmp = document::begin;
while(tmp){//Пока не найден
tmp->show();//Выводим на экран
tmp = tmp->next;
}
}
void main(){
check d1("IzhCom",125); nakl d2("SPI",150); kvit d3("MVD",300);
d1.add;(); d2.add(); d3.add();//Добавление в список
document::print();//Просмотр
Лабораторная работа №5
Цель. Получить практические навыки работы в среде ВС++5.02 и создания EasyWin программы. Получить практические навыки создания абстрактных типов данных и перегрузки операций в языке C++.
Основное содержание работы.
Определить и реализовать класс set - абстрактный тип данных. Определить и реализовать операции над данными этого класса. Написать и выполнить EasyWin программу полного тестирования этого класса.
Порядок выполнения работы.
1 .Выбрать класс АТД в
2.Определить и реализовать в классе конструкторы, деструктор, функции Input (ввод с клавиатуры) и Рrint (вывод на экран), перегрузить операцию присваивания.
3.Написать программу
4.Дополнить определение
5.Реализовать эти операции. Выполнить тестирование.
Приложение 1. Файл set_int.h
#include<malloc.h>
#include<stdio.h>
class set{//Множество
public:
set(){
thls->current_size=0;//
this->mas=(int*)malloc(sizeof(
}
set(int n, ...){
int *p=&n, *tmp, i;
this->max_size = 5; this->current_size=0;
//Для дальнейшего изменения
mas = (int*)malloc(sizeof(int));
tmp = (int*)malloc(sizeof(int));
//Считываем все
While(*p){
if(this->current_size){
for(i=0;i<this->current_size;
tmp[this->current_size]=(*р);/
mas=(int*)realloc(&mas[0],(
for(i=0;i<this->current_size+
} else this->mas[this->current_size++
p++;
}
free(&tmp[0]);
}
set(const set& tmp){//Копирование
this->current_size=tmp.
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;
}
set& operator=(const set& tmp){//Присваивание
if(this==&tmp) return *this;
this->current_size = tmp.current_size;
Информация о работе Контрольная работа по "Программированию на языке СИ++"