- Реализовать:
- Две структуры для хранения предложений (text) и слов (sentence).
- Функцию ввода (и контроля ввода) текста, возвращающая строку с введенным текстом.
- Функцию разделения текста на предложения по разделителям (точкам).
- Функцию разделения предложения на слова по разделителям (пробелам и пр.).
- Перегрузку операторов вывода в поток (
<<) для структур (для печати).
- Поместить все структуры и функции в отдельную общую библиотеку.
- Выполнить с помощью данной библиотеки индивидуальное задание.
Более подробно читайте в вики-статье.
В режиме DEBUG компилируется с минималистичным интерфейсом В режиме RELEASE - с полным и красочным интерфейсом
Структуры, хранятся в packcage.h:
struct Word
{
char *symbols; // Массив символов слова
int len; // Длина слова
~Word(); // Очистка памяти
//...
};
struct Sentence
{
Word **word; // Массив указателей на слова
int size; // Кол-во слов в предложении
~Sentence(); // Очистка памяти
//...
};
struct Text
{
Sentence **sent; // Массив указателей на предложения
int size; // Кол-во предложений в тексте
~Text(); // Очистка памяти
//...
};Прототипы функций, реализация - в packcage.cpp:
char* inputText(); // Ввод и проверка текста
Text* getText(const char *txt); // Формирование текста
Sentence* getSentence(const char *txt); // Формирование предложения
Word* getWord(const char *txt); // Формирование слова
void say(const char *msg); // Вспомогательная функция выводаПример работы со структурами:
// Создаем слово
Word *w = new Word;
w->len = 5;
w->symbols = new char[w->len];
w->symbols = "hell";
// Создаем из слов предложение
Sentence *s = new Sentence;
s->size = 3;
s->word = new Word*[s->size];
s->word[0] = w;
s->word[1] = w;
s->word[2] = w;
// Из предложений - текст
Text *t = new Text;
t->size = 2;
t->sent = new Sentence*[t->size];
t->sent[0] = s;
t->sent[1] = s;
cout << *t;
// Обращаемся к конкретному слову текста
cout << t->sent[1]->word[2] << endl; Михаил - архитектура, перегрузка операторов <<, реализация: getText, ~Text, getSentence, ~Sentence
Артём - реализация: inputText, getText, ~Text
Тагир - пользовательский интерфейс, реализация: main, getWord, ~Word
Никита - реализация: getSentence, ~Sentence
Роман - реализация: getWord, ~Word
| Требует реализации | Ответсвенные | Готовность |
|---|---|---|
| main | Тагир | OK |
| Word | Михаил | OK |
| Sentence | Михаил | OK |
| Text | Михаил | OK |
| inputText | Артем | OK |
| getText | Артем, Михаил | OK |
| getSentence | Никита, Михаил | OK |
| getWord | Роман, Тагир | OK |
| ~Text | Артем, Михаил | OK |
| ~Sentence | Никита, Михаил | OK |
| ~Word | Роман, Тагир | OK |
Ключи:
OK- готово..- частично готовоNO- не готово- приоритет ответсвенности слева направо убывает
master - основная ветка, защищена от записи
shadow - ветка изменений Михаилa
helisrain - ветка изменений Тагира
- Мастер-ветка (
master) защищена от прямой записи и принудительных коммитов. Для внесения изменений создаем отдельные ветки и запрашиваем pull-request в мастер. - Директория
Personal/игнорируется системой контроля версий и предназначена для файлов проекта, необходимых вам для выполнения индивидуального задания. - Все новые коммиты обсуждаются, после тестирования внесенных изменений делается pull-request в мастер-ветку, который одобряется (или не одобряется) администратором репозитория.
- Конфликты, возможно возникающие при слиянии веток, решаются ВСЕМИ членами команды, участвующими в разработке сливаемых веток, а также при присутствии ответственного за данное подразделение.
- Михаил Кучеренко (SnipGhost)
- Артём Сахаров (xXMEATXx)
- Тагир Ханмурзин (HeliSRaiN)
- Никита Москальцов
- Роман Мирзоян
МГТУ им Н.Э.Баумана.
Группа ИУ5-14, бригада №2, 2016 год.