- Реализовать:
- Две структуры для хранения предложений (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 год.