Лекции.Орг

Поиск:


Устал с поисками информации? Мы тебе поможем!

реализация методов класса

Задание.

Согласно заданию программно объявить класс на языке C++, его методы и поля, написать реализацию этих методов.

В каждом классе должен быть:

- конструктор (задаёт начальные значения полям класса);

- деструктор (освобождает память, которая выделялась под массив);

- метод, резервирующий память под N элементов (N – аргумент);

- метод, задающий значение k-этого элемента массива (k и значение элемента массива – аргументы);

- метод, заполняющий массив случайными элементами;

- метод, выводящий массив на экран;

- метод, описанный в варианте заданий.

В функции main() создать объект этого класса, с его помощью продемонстрировать работу всех методов класса. Вызов каждого метода (кроме конструктора и деструктора) организовать с помощью меню.

При реализации методов класса предусмотреть обработку ошибочных ситуаций: в массиве нет элемента с номером k, k меньше 0 и т.п.

 

Пример определения класса и работы с его объектом

 

//файл array.h

 

Объявление класса

class CDynamicArray

{

//объявление приватных членов класса

//поля класса:

int nCount; //реальная длина массива; если массив пуст – nCount=0

int *arr; // указатель на массив

public: //объеялание общедоступных членов класса

// методы класса::

CDynamicArray(); //конструктор; вызвается, когда создаётся объект класса

~CDynamicArray();//деструктор; вызвается, когда уничтожается объект класса

void CreateArray(int N); //создание массива

void SetValue(int k, int value); //установка элемента массива

void FillArrayRandValues(); //заполнение массива случайными числами

void DisplayArray(); // вывод элементов массива на экран

};

 

//файл array.cpp

#include "array.h"

#include <stdlib.h>

#include <stdio.h>

 

реализация методов класса

CDynamicArray::CDynamicArray()

{

nCount=0; //начальные значения полей класса: массив пуст

arr=NULL;

}

 

CDynamicArray::~CDynamicArray()

{

delete [] arr; //освобождение памяти, занимаемой массивом

}

 

void CDynamicArray::CreateArray(int N)

{

if (N>0) //если задан корректно новый размер массива – создаём его

{

if (arr!=NULL) //если массив уже существовал – уничтожаем его

delete [] arr;

arr=new int[N];

nCount=N;

printf("Массив создан\n");

}

else

printf("Ошибка! Размер массива должен быть больше 0\n");

 

}

 

void CDynamicArray::SetValue(int k, int value)

{

if (k>=0 && k<nCount) //если элемент с индексом k существует, меняем его

arr[k]=value;

else

printf("Ошибка! Задан неверный индекс массива\n");

}

 

void CDynamicArray::FillArrayRandValues()

{

if(nCount>0) //если массив создан

{

for(int i=0; i<nCount; i++)

arr[i]=rand()%100;

DisplayArray();

}

else

printf("Массив не создан\n");

}

 

void CDynamicArray::DisplayArray()

{

if(nCount>0) //если массив создан

{

for(int i=0; i<nCount; i++)

printf("%d ",arr[i]);

printf("\n");

}

else

printf("Массив не создан\n");

}

 

//файл mainfile.cpp

#include "array.h"

#include <stdio.h>

#include <conio.h>

#include <locale.h>

#include <stdlib.h>

#include <time.h>

 

int main()

{

CDynamicArray ar; //создаётся объект класса, при этом автоматически вызывается конструктор

int key,n,k,val;

srand(time(NULL)); // включаем генератор случайных чисел

setlocale(0,"RUS"); // обеспесиваем вывод в консольное окно символов кириллицы

do

{

printf("\n\n1 - создание массива\n");

printf("2 - изменение элементов массива\n");

printf("3 - заполнение массива случайными числами\n");

printf("4 - вывод на экран элементов массива\n");

printf("ESC - выход\n");

printf("Ваш выбор: \n");

key=getch();

switch(key)

{

case '1':

printf("Введите количество элементов массива: ");

scanf("%d",&n);

ar.CreateArray(n);

break;

case '2':

printf("Введите номер элемента массива: ");

scanf("%d",&k);

printf("Введите значение элемента массива: ");

scanf("%d",&val);

ar.SetValue(k,val);

break;

case '3':

ar.FillArrayRandValues();

break;

case '4':

ar.DisplayArray();

break;

}

}

while(key!=27);

return 0; //объект класса уничтожается, автоматически вызывается деструктор

}

 

Содержание отчёта

 

1. Титульный лист.

2. Условие лабораторной работы.

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

4. Экранные формы с примерами работы программы.

 

 


Варианты заданий.

 

1. Описать класс CArrayDeleteFirstZero для работы с массивами динамической длины. Дополнительный метод: удаление из массива первого найденного нулевого элемента со сдвигом элементов.

 

2. Описать класс CArraySort для работы с массивами динамической длины. Дополнительный метод: сортировка элементов массива.

 

3. Описать класс CArrayDelete для работы с массивами динамической длины. Дополнительный метод: удаление элемента с номером N (N – аргумент метода, задаётся пользователем в функции main()).

 

4. Описать класс CArrayLast для работы с массивами динамической длины. Дополнительный метод: вывод последних N элементов массива (N – аргумент метода, задаётся пользователем в функции main()).

 

5. Описать класс CArrayDoubleDirected для работы с массивами динамической длины. Дополнительный метод: вывод массива на экран в обратном направлении.

 

6. Описать класс CArrayRemoveIfOdd для работы с массивами динамической длины. Дополнительный метод: удаление элементов, стоящих на четных местах.



 

7. Описать класс CArrayRemoveIfOddValue для работы с массивами динамической длины. Дополнительный метод: удаление элементов, четных по значению.

 

8. Описать класс CArrayRemoveIfNotOdd для работы с массивами динамической длины. Дополнительный метод: удаление элементов, стоящих на нечетных местах.

 

9. Описать класс CArrayRemoveIfNotOddValue для работы с массивами динамической длины. Дополнительный метод: удаление элементов, нечетных по значению.

 

10. Описать класс CArrayRemoveEveryN для работы с массивами динамической длины. Дополнительный метод: удаление каждого N-го элемента массива (N – аргумент метода, задаётся пользователем в функции main()).

 

 

11. Описать класс CArrayShiftLeft для работы с массивами динамической длины. Дополнительный метод: циклический сдвиг элементов массива влево на N позиций (N – аргумент метода, задаётся пользователем в функции main()).

 

12. Описать класс CArrayShiftRight для работы с массивами динамической длины. Дополнительный метод: циклический сдвиг элементов массива вправо на N позиций (N – аргумент метода, задаётся пользователем в функции main()).

 

13. Описать класс CArrayDeleteMaxPositiveItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива максимального положительного элемента со сдвигом элементов.

 

14. Описать класс CArrayDeleteMaxNegativeItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива максимального отрицательного элемента со сдвигом элементов.

 

15. Описать класс CArrayDeleteMinPositiveItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива минимального положительного элемента со сдвигом элементов.

 

16. Описать класс CArrayDeleteMinNegativeItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива минимального отрицательного элемента со сдвигом элементов.

 

17. Описать класс CArrayDeleteMaxOddItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива максимального чётного элемента со сдвигом элементов.

 

18. Описать класс CArrayDeleteMaxNotOddItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива максимального нечётного элемента со сдвигом элементов.

 

19. Описать класс CArrayDeleteMinOddItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива минимального чётного элемента со сдвигом элементов.

 

20. Описать класс CArrayDeleteMinNotOddItems для работы с массивами динамической длины. Дополнительный метод: удаление из массива минимального нечётного элемента со сдвигом элементов.

 

21. Описать класс CArrayDeleteFirstOdd для работы с массивами динамической длины. Дополнительный метод: удаление из массива первого найденного чётного элемента со сдвигом элементов.

 

22. Описать класс CArrayDeleteFirstNotOdd для работы с массивами динамической длины. Дополнительный метод: удаление из массива первого найденного нечётного элемента со сдвигом элементов.

 

23. Описать класс CArrayDeleteFirstPositive для работы с массивами динамической длины. Дополнительный метод: удаление из массива первого найденного положительного элемента со сдвигом элементов.

 

24. Описать класс CArrayDeleteFirstNegative для работы с массивами динамической длины. Дополнительный метод: удаление из массива первого найденного отрицательного элемента со сдвигом элементов.

 

25. Описать класс CArrayDeleteLastOdd для работы с массивами динамической длины. Дополнительный метод: удаление из массива последнего найденного чётного элемента со сдвигом элементов.

 

 



<== предыдущая лекция | следующая лекция ==>
Задание. Создать приложение, содержащее форму, общий вид которой показан на рис.1 | Файл stove.cpp

Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 649 | Нарушение авторских прав | Изречения для студентов


Читайте также:

Поиск на сайте:

Рекомендуемый контект:





© 2015-2021 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.