Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

Задание.

Согласно заданию программно объявить класс на языке 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; Мы поможем в написании ваших работ!; просмотров: 853 | Нарушение авторских прав


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

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2551 - | 2215 -


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

Ген: 0.012 с.