Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа ооп.doc
Скачиваний:
49
Добавлен:
01.04.2014
Размер:
1.42 Mб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет информатики

и радиоэлектроники»

Контрольная работа по курсу

Объектно-ориентированное программирование

вариант № 16

Минск, 2011г.

Содержание

1 ЗАДАЧА 1............................................................................................................3

    1. Условие задачи ......................................................................................3

    2. Блок-схема алгоритма функции ..........................................................3

    3. Текст программы ...................................................................................4

    4. Скриншоты с результатами работы.....................................................7

2 ЗАДАЧА 2 ..........................................................................................................8

2.1 Условие задачи .....................................................................................8

2.2 Блок-схема алгоритма функции...........................................................8

2.3 Текст программы...................................................................................9

2.4 Скриншоты с результатами работы...................................................13

3 ЗАДАЧА 3..........................................................................................................14

3.1 Условие задачи ....................................................................................14

3.2 Блок-схема алгоритма функции..........................................................14

3.3 Текст программы..................................................................................16

3.4 Скриншоты с результатами работы...................................................19

4 ЗАДАЧА 4..........................................................................................................20

4.1 Условие задачи ....................................................................................20

4.2 Блок-схема алгоритма функции..........................................................20

4.3 Текст программы..................................................................................21

4.4 Скриншоты с результатами работы...................................................24

Заключение...........................................................................................................25

Список литературы

1 Задача 1

    1. Условие задачи

Создать 2 объекта разработанного класса. Класс – динамический вектор (одномерный массив). В результате выполнения программы в первом объекте должны содержаться все четные, а во втором все нечетные числа исходных векторов. Содержимое объектов (их векторов) до и после обмена вывести на экран.

    1. Блок-схема алгоритма функции get

Функция get возвращает элемент с индексом index из вектора.

    1. Текст программы

#include <iostream>

using namespace std;

#define MAX_VECTOR_SIZE 1000

class MyVector {

int *_data; // указатель на начало данных вектора

unsigned int _max_size; // максимальный количество элементов вектора

unsigned int _end; // индекс на конец данных вектора

// выделение памяти под данные вектора

void init(unsigned int size) {

_max_size = size;

_data = new int[_max_size];

_end = 0;

}

public:

// конструктор по умолчанию, выделяет место под вектор на MAX_VECTOR_SIZE элементов

MyVector() {

init(MAX_VECTOR_SIZE);

}

// конструктор с параметрами, выделяет место под вектор на size элементов

MyVector(unsigned int size) {

init(size);

}

// конструктор копирования

MyVector(MyVector const & copy) {

delete _data;

init(copy.max_size());

int i;

for (i = 0; i < copy.size(); i++) {

push_to_end(copy.get(i));

}

};

// деструктор, высвобождает выделенную память

~MyVector() {

delete _data;

};

// возвращает элемент с индексом index из вектора

int get(unsigned int index) const {

if (index < _end)

return _data[index];

else {

cout << "oshibka, previshen index massiva" << endl;

return 0;

}

}

// возвращает количество элементов векторе

int size() const {

return _end;

}

// возвращает максимально возможное количество элементов

int max_size() const {

return _max_size;

}

// добавляет элемент в конец вектора

void push_to_end(int element) {

if (_end < _max_size) {

_data[_end] = element;

_end++;

}

}

// удаляет элемент с индексом из вектора

void remove(int index) {

if (index < _end) {

memmove(_data + index, _data + index + 1, (_end - index - 1) * sizeof (int));

_end--;

} else

cout << "oshibka, previshen index massiva" << endl;

}

// выводит на экран содержимое вектора

void show() const {

int index;

cout << "[ ";

for (index = 0; index < _end; index++) {

cout << _data[index];

if ((index + 1) != _end) {

cout << ", ";

}

}

cout << " ]" << endl;

}

};

int main() {

MyVector v1;

MyVector v2;

// заполняем элементами исходные вектора

v1.push_to_end(10);

v1.push_to_end(3);

v1.push_to_end(6);

v1.push_to_end(45);

v1.push_to_end(67);

v1.push_to_end(23);

v1.push_to_end(22);

v1.push_to_end(21);

v1.push_to_end(10);

v2.push_to_end(11);

v2.push_to_end(32);

v2.push_to_end(75);

v2.push_to_end(41);

v2.push_to_end(62);

v2.push_to_end(13);

v2.push_to_end(12);

v2.push_to_end(200);

v2.push_to_end(11);

v2.push_to_end(12);

cout << "ZADACHA 1" << endl;

cout << "V1 ";

v1.show();

cout << "V2 ";

v2.show();

// удаляем нечетные элементы

int index;

for (index = 0; index < v1.size();) {

if (v1.get(index) % 2 != 0) {

v1.remove(index);

} else {

index++;

}

}

cout << "V1 tolko chetnie ";

v1.show();

// удаляем четные элементы

for (index = 0; index < v2.size();) {

if (v2.get(index) % 2 == 0) {

v2.remove(index);

} else {

index++;

}

}

cout << "V2 tolko nechetnie ";

v2.show();

return 0;

}

    1. Скриншоты с результатами работы

Скриншот на котором изображены исходные объекты, и объекты после сортировки:

Если мы превысим индекс массива, то получим такой результат: