Объявление класса при помощи c++
Лабораторная работа №1
Объявление класса при помощи C++
Цель работы: изучить структуру классов, особенности реализации методов класса и создания объектов; приобрести навыки в работе с классами на языке C++.
Задание.
Согласно заданию программно объявить класс на языке C++, его методы и поля, написать реализацию этих методов.
В каждом классе должен быть:
— конструктор (задаёт начальные значения полям класса);
— деструктор (освобождает память, которая выделялась под массив);
— метод, добавляющий элемент в список;
— метод, очищающий список;
— метод, выводящий список на экран;
— метод, описанный в варианте заданий.
В функции main() создать объект этого класса, с его помощью продемонстрировать работу всех методов класса. Вызов каждого метода (кроме конструктора и деструктора) организовать с помощью меню.
При реализации методов класса предусмотреть обработку ошибочных ситуаций: в списке нет элемента с номером N, N меньше 0 и т. п.
Пример определения класса и работы с его объектом
//файл list. h
// объявление класса
class CList
{
struct list
{
char info[100];
struct list *next;
};
struct list *head;
public:
CList();
~CList();
void AddItem(char *);
void DisplayList();
void ReleaseList();
};
//файл list. cpp
#include "array. h"
#include <stdlib. h>
#include <stdio. h>
//реализация методов класса
#include <string. h>
#include <stdio. h>
#include "list. h"
CList::CList()
{
head=NULL;
}
CList::~CList()
{
ReleaseList();
}
void CList::AddItem(char* s)
{
struct list *newItem;
newItem = new struct list;
strcpy(newItem->info, s);
if (head==NULL)
{
head=newItem;
head->next = NULL;
}
else
{
newItem->next = head;
head = newItem;
}
}
void CList::DisplayList()
{
char *s=new char[100];;
char s1[10];
struct list *p;
p=head;
strcpy(s,"");
while (p!=NULL)
{
printf("%s->",p->info);
p=p->next;
}
printf("NULLn");
}
void CList::ReleaseList()
{
if (head!=NULL)
{
struct list *p;
while (head!=NULL)
{
p=head;
head=head->next;
delete p;
}
head=NULL;
}
}
//файл mainfile. cpp
#include "array. h"
#include <stdio. h>
#include <conio. h>
#include "list. h"
#include <stdio. h>
#include <conio. h>
#include <locale. h>
#include <stdlib. h>
int main()
{
CList list; //создаётся объект класса, при этом автоматически вызывается конструктор
int key;
char val[100];
setlocale(0,"RUS"); // обеспесиваем вывод в консольное окно символов кириллицы
do
{
printf("nn1 — добавление элементаn");
printf("2 — вывод списка на экранn");
printf("3 — очитска спискаn");
printf("ESC — выходn");
printf("Ваш выбор: n");
key=getch();
switch(key)
{
case ‘1’:
printf("Введите элемент списка: ");
scanf("%s",val);
list. AddItem(val);
break;
case ‘2’:
list. DisplayList();
break;
case ‘3’:
list. ReleaseList();
break;
}
}
while(key!=27);
return 0; //объект класса уничтожается, автоматически вызывается деструктор
}
Содержание отчёта
1. Титульный лист.
2. Условие лабораторной работы.
3. Текст программы.
4. Экранные формы с примерами работы программы.
Варианты заданий.
1. Описать класс CListDelete для работы со списками. Дополнительный метод: удаление N-го элемента списка (N – аргумент метода, задаётся пользователем в функции main()).
2. Описать класс CListLast для работы со списками. Дополнительный метод: вывод последних N элементов списка.
3. Описать класс CListDoubleDirected для работы с двунаправленными списками. Дополнительный метод: вывод элементов списка на экран обратном направлении.
4. Описать класс CListRemoveIfOdd для работы со списками. Дополнительный метод: удаление элементов, стоящих на четных местах.
5. Описать класс CListRemoveIfOddValue для работы со списками. Дополнительный метод: удаление элементов, четных по значению.
6. Описать класс CListRemoveIfNotOdd для работы со списками. Дополнительный метод: удаление элементов, стоящих на нечетных местах.
7. Описать класс CListRemoveIfOddValue для работы со списками. Дополнительный метод: удаление элементов, нечетных по значению.
8. Описать класс CListRemoveEveryN для работы со списками. Дополнительный метод: удаление каждого N-го элемента (N – аргумент метода, задаётся пользователем в функции main()).
9. Описать класс CListSorted для работы с упорядоченными списками. Дополнительный метод: добавление элементов в список с сохранением упорядоченности списка.
10. Описать класс CListDeleteFirstZero для работы со списками. Дополнительный метод: удаление из массива первого найденного нулевого элемента со сдвигом элементов.
11. Описать класс CListShiftLeft для работы со списками. Дополнительный метод: циклический сдвиг элементов списка влево на N позиций (N – аргумент метода, задаётся пользователем в функции main()).
12. Описать класс CListShiftRight для работы со списками. Дополнительный метод: циклический сдвиг элементов списка вправо на N позиций (N – аргумент метода, задаётся пользователем в функции main()).
13. Описать класс CListDeleteMaxPositiveItems для работы со списками. Дополнительный метод: удаление из списка максимального положительного элемента.
14. Описать класс CListDeleteMaxNegativeItems для работы со списками. Дополнительный метод: удаление из списка максимального отрицательного элемента.
15. Описать класс CListDeleteMinPositiveItems для работы со списками. Дополнительный метод: удаление из списка минимального положительного элемента.
16. Описать класс CListDeleteMinNegativeItems для работы со списками. Дополнительный метод: удаление из списка минимального отрицательного элемента.
17. Описать класс CListDeleteMaxOddItems для работы со списками. Дополнительный метод: удаление из списка максимального чётного элемента.
18. Описать класс CListDeleteMaxNotOddItems для работы со списками. Дополнительный метод: удаление из списка максимального нечётного элемента.
19. Описать класс CListDeleteMinOddItems для работы со списками. Дополнительный метод: удаление из списка минимального чётного элемента.
20. Описать класс CListDeleteMinNotOddItems для работы со списками. Дополнительный метод: удаление из списка минимального нечётного элемента.
21. Описать класс CListDeleteFirstOdd для работы со списками. Дополнительный метод: удаление из списка первого найденного чётного элемента.
22. Описать класс CListDeleteFirstNotOdd для работы со списками. Дополнительный метод: удаление из массива первого найденного нечётного элемента.
23. Описать класс CListDeleteFirstPositive для работы со списками. Дополнительный метод: удаление из списка первого найденного положительного элемента.
24. Описать класс CListDeleteFirstNegative для работы со списками. Дополнительный метод: удаление из списка первого найденного отрицательного элемента со сдвигом элементов.
25. Описать класс CListDeleteLastOdd для работы со списками. Дополнительный метод: удаление из списка последнего найденного чётного элемента.