ок додавання нового персонажа. Неточні відповіді: скоріше так і скоріше ні впливають на те, на скільки ймовірність збільшиться чи зменшиться. При відповіді не знаю, це питання просто видаляється. p align="justify"> Відповідь вважається знайденим, якщо різниця між двома, на даний момент самими ймовірними відповідями, буде більше заздалегідь заданої константи. Якщо користувач загадав персонажа, якого немає в базі, то програма видасть поточного найбільш ймовірного (придатного для цієї бази) персонажа. А користувач може скорегувати відповідь програми. p align="justify"> Для додавання нового персонажа, користувачеві пропонується ввести ім'я. Якщо його немає в базі (якщо є, програма видала невірний результат через слабкий бази), то він додається до бази відповідей, а вектор його питань буде дорівнює вектору позитивних відповідей у ​​рамках даної гри. p align="justify"> Далі користувачеві пропонується ввести питань, який дозволить відрізнити персонажа користувача від персонажа, виданого програмою. Це питання запам'ятовується в базі і заноситься у вектор відповідей для нового персонажа. Сам персонаж так само заноситься в базу. p align="justify"> гра програма алгоритм
Структура програми
В
Основний алгоритм укладено в клас toguess. Методи: () - конструктор. Зчитування бази з файлів. p align="justify"> void save () - збереження зміненої бази
void newgame () - нова гра, скидання вектора позитивних відповідей, завантаження скоригованої бази
int getQuestion () - видає нове питання
void setQuestion (int id, bool q); - коригує ймовірності відповідей відповідно з відповіддю користувача на питання з id.
int getResponse (int id = 0); - спроба отримати відповідь
char * getfResponse (int id); - повертає відповідь з даними id у векторі
void setResponse (int id, bool flag); - коригує базу, якщо програма вгадала правильно. Не потрібен, поки база мала. Має сенс, коли база більше декількох тисяч варіантів
void newResponse (char * response); - додає в базу нового персонажа
void newQuestion (char * q); - додає в базу новий вопросdellQuestion (int id); - видаляє питання з векторів відповідей персонажів.
Приватний методи:
bool findInVector (std :: vector v, int id); - шукає id у векторі. Якщо знаходить, повертає true
bool findInVector (std :: vector v, int id); - шукає id у векторі. Якщо знаходить, повертає true
int maxid (std :: vector _questions); - повертає максимальний id у векторі
char * addspaces (char * str); - замінює ніжніче пдчерківанія на прогалини
char * toniceview (char * str); - перево...