- •Федеральное агенство по образованию
- •Оглавление
- •Массивы указателей на строки Задание 1. Текстовый редактор Задание 1.1 Динамическая память. Модульное программирование
- •Задание 1.2 Реализация таблицы на основе динамического массива
- •Задание 1.3 Специальные функции работы со строками
- •Задание 1.3 Разработка приложенияWindowsForms
- •Структуры Задание 2 Реализация текстового редактора с использованием структур данных Задание 2.1 Представления набора строк в виде структур данных
- •Задание 2.2 Реализация операций выборки, преобразования и сортировки наборов строк с использованием словаря данных
- •Задание 3. Информационная система
- •Задание 3.1 Модульное программирование
- •Задание 3.2 Работа с и динамической памятью
- •Задание 3.3 Ввод и вывод
- •Пример реализации для консольного приложения
- •Пример реализации для приложения с оконным графическим интерфейсом
- •Задание 3.4 Сравнение структур
- •Задание 3.5 Консольное приложение
- •Задание 3.5 Приложение WindowsForms
- •3.6 Пример пошаговой разработки приложение WindowsForms
- •Классы. Задание 4. Объектно-ориентированная реализация текстового редактора
- •Задание 4. 1 Разработка класса классаMyString.
- •Задание 4. 2 Разработка класса таблица.
- •Задание 5. Объектно-ориентированная реализация информационной системы Задание 5.1 Представление структуры данных записи (Record), в виде класса с конструкторами и деструкторами
- •Задание 5. 2 Разработка класса таблица для хранения объектов классаRecord.
- •Задание 5.3 Представление базовых понятий предметной области в виде классов. Разработка интерфейса и реализации. Определение конструкторов классов.
- •1. Разработать класс MyDate (дата-время)
- •3. Дополнить класс MyString (строка)
- •4. Разработать класс Title (название)
- •5 . Разработать класс Name (имя)
- •6. Разработать класс Address (Адрес)
- •7. Разработать класс Telephone ( номер телефона)
- •8. Разработать класс e_Mail (Адрес электронной почты)
- •Задание 5.2 Использование объектов классов в качестве элементов классов
- •Задание 5.3 Использование указателей на объекты классов и объекты классов в качестве элементов классов
- •Задание 5.4 Система управления данными.
- •Задание 5.5 Иерархия классов
- •Задание 5.6 Шаблоны классов
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •В среде разработки Visual Studio .Net (массивы строк, структуры, классы)
3. Дополнить класс MyString (строка)
Вариант 1. (оптимальное использование памяти)
Память под строку выделяется ровно столько, сколько необходимо для хранения символов. Любая операция, приводящая к увеличению или уменьшению числа символов, сопровождается выделением нового участка памяти и освобождением старого
В классе должны быть определены функции
class MyString
{char* s;
int len;
public:
//…
int find(MyString * item);
MyString* substring(int pos,int count);
MyString* erase(int pos,int count);
MyString* insert(int pos, MyString * item);
MyString* remove(MyString * item);
MyString* replace(MyString *Old, MyString *New);
MyString**split(int&count) Разбивает строку на массив слов
MyString**split(MyString*splits,int&count); Разбивает строку на массив подстрок, используя строку символов - разделителей
static MyString * concate(MyString* s1, MyString* s2); Соединяет(сцепляет) две строки
static MyString * concate(MyString* mas[], int count); Соединяет(сцепляет) массив строк
static MyString * join(MyString* mas[], int count, char split); Соединяет(сцепляет) массив строк, вставляя между ними символ разделитель
};
Вариант 2. ( оптимальная эффективность операций)
Память под строку выделяется больше необходимого размера. Выделением нового участка памяти при реализации операций над строками производится только в случае ее исчерпания. Для этого используется функция voidresize(intnewsize);
В классе должны быть определены функции
#define MAX_SIZE 256
class MyString
{char* s;
char* cur;
int size;
public:
//…
MyString()
{cur=s=new char [size =MAX_SIZE];
*s=’\0’;
}
void resize(int newsize);
MyString & mystring::operator= (const MyString & a){
if(this!=&a) {
if(size< a.length())
{delete[] s;
s=new char[a. size];
}
strcpy(s,a.s);
size =a. size;
cur=s+ a.length();
}
return *this;}
int find(int first,int last,const MyString & item);
MyString substring(int pos,int count);
int erase(int pos,int count);
int insert(int pos, const MyString & item);
int remove(int first,int last,const MyString & item);
int replace(int first,int last,const MyString &Old,const MyString &New);
MyString*split(int&count) Разбивает строку на массив слов
MyString*split(constMyString&splits,int&count); Разбивает строку на массив подстрок, используя строку символов - разделителей
static MyString concate(const MyString& s1, const MyString& s2);
Соединяет(сцепляет) две строки
static MyString concate(MyString mas[], int count); Соединяет(сцепляет) массив строк
static MyString join(MyString mas[],int count ,char split); Соединяет(сцепляет) массив строк, вставляя между ними символ разделитель
};
4. Разработать класс Title (название)
Данные хранятся в виде одной строки (класс MyString) . Варианты задания отличаются различными условиями при проверке корректности данных:
Все буквы и пробелы
Все буквы и пробелы +первая буква заглавная
Все буквы и пробелы +первая буква заглавная + в каждом слове присутствует хотя бы одна гласная
5 . Разработать класс Name (имя)
Класс должен содержать функции сравнения по фамилии, по имени, по отчеству
Данные хранятся в виде:
Одной строки (класс MyString)
Трех строк (класс MyString) , в каждой из которых содержится фамилия имя отчество соответственно
Одной строки (класс MyString) с фамилией и двух переменных символьного типа с инициалами