Skip to content
/ HomeWork Public

Командный лабораторный проект

Notifications You must be signed in to change notification settings

MATNR/HomeWork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Командный лабораторный проект

Постановка задачи

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

Небольшой перечень фактов

  1. Мастер-ветка (master) защищена от прямой записи и принудительных коммитов. Для внесения изменений создаем отдельные ветки и запрашиваем pull-request в мастер.
  2. Директория Personal/ игнорируется системой контроля версий и предназначена для файлов проекта, необходимых вам для выполнения индивидуального задания.
  3. Все новые коммиты обсуждаются, после тестирования внесенных изменений делается pull-request в мастер-ветку, который одобряется (или не одобряется) администратором репозитория.
  4. Конфликты, возможно возникающие при слиянии веток, решаются ВСЕМИ членами команды, участвующими в разработке сливаемых веток, а также при присутствии ответственного за данное подразделение.

Команда разработки

  • Михаил Кучеренко (SnipGhost)
  • Артём Сахаров (xXMEATXx)
  • Тагир Ханмурзин (HeliSRaiN)
  • Никита Москальцов
  • Роман Мирзоян

МГТУ им Н.Э.Баумана.
Группа ИУ5-14, бригада №2, 2016 год.