Игра "Акинатор". Язык программирования: С++. Среда разработки: Microsoft Visual Studio 2010
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
size () - 1;
}return 0;
}* toguess:: getfResponse (int id)
{Tresponses [id]. response;
}toguess:: setResponse (int id, bool flag)
{
// if (flag)
// responses [id]. probability+=0.001;
}toguess:: newResponse (char* response)
{(int i=0; i<responses. size (); i++)
{(strcmp (responses [i]. response,response) ==0) return;
}
// Добавление новго ответа в базу;
s_response thisResponse;. idQuest = donequest;. probability = 0.001;. response = response;. push_back (thisResponse);
}
void toguess:: save ()
{ // деструктор
// сохранение базы
FILE* file=fopen ("responses. txt","w");(! file)
{<<"Error!"<<endl;;
}(int i=0; i<responses. size (); i++)
{(file,"%s /%i ",responses [i]. response,responses [i]. idQuest. size ());(int j=0; j<responses [i]. idQuest. size (); j++) fprintf (file,"%i ",responses [i]. idQuest [j]);(file,"%f/ \n",responses [i]. probability);
}(file);file1 ("questions. txt");(file1. fail ())
{<<"Error!"<<endl;;
}(int i=0; i<questions. size (); i++)
{<<"/"<<questions [i]. question<<" /"<<questions [i]. id<<" "<<endl;
}
}toguess:: newQuestion (char* q)
{
// новый вопрос_newQ;* newQ=new char [strlen (_newQ)];(newQ,_newQ);_question thisQuestion;
thisQuestion. id = maxid (questions) +1;. question = newQ;
for (int i=0; i<responses. size (); i++)
{(strcmp (responses [i]. response,q) ==0)
{[i]. idQuest. push_back (thisQuestion. id);
}
}. push_back (thisQuestion);
}toguess:: maxid (vector _questions)
{max=0;(int i=0; i<_questions. size (); i++)
{(_questions [i]. id>max) max=_questions [i]. id;
}max;
}toguess:: dellQuestion (int id)
{
// удаление вопроса(int i=0; i<Tresponses. size (); i++)
{(findInVector (Tresponses [i]. idQuest, id))
{(int j=0; j<Tresponses [i]. idQuest. size (); j++)
{(Tresponses [i]. idQuest [j] ==id) Tresponses [i]. idQuest [j] =-1;
}
}
}
}* toguess:: addspaces (char* str1)
{* str=new char [strlen (str1)];(str,str1);
// добавление пробелов(int i=0; i<strlen (str); i++)
{(str [i] ==_) str [i] = ;
}str;
}* toguess:: toniceview (char* str1)
{
// перевод str в номарлный вид (удаление _ и перевод из транслита)
int i=0;* str = new char [strlen (str1) +1];(i<strlen (str1))
{(str1 [i])
{A: str [i] =a; break;B: str [i] =b; break;C: str [i] =c; break;D: str [i] =d; break;F: str [i] =f; break;E: str [i] =e; break;G: str [i] =g; break;H: str [i] =h; break;I: str [i] =i; break;J: str [i] =j; break;K: str [i] =k; break;
case L: str [i] =l; break;
case M: str [i] =m; break;N: str [i] =n; break;O: str [i] =o; break;P: str [i] =p; break;Q: str [i] =q; break;R: str [i] =r; break;S: str [i] =s; break;T: str [i] =t; break;U: str [i] =u; break;V: str [i] =v; break;W: str [i] =w; break;X: str [i] =x; break;Y: str [i] =y; break;Z: str [i] =z; break;
default: str [i] =str1 [i];
}++;
}[strlen (str1)] =\0; temp;=0;(i<strlen (str))
{(str [i])
{a: temp. push_back (а); break;b: temp. push_back (б); break;c:(str [i+1] ==h) {temp. push_back (ч); i++; }temp. push_back (с); break;d: temp. push_back (д); break;f: temp. push_back (ф); break;e: temp. push_back (е); break;g: temp. push_back (г); break;h: temp. push_back (х); break;i: temp. push_back (и); break;j:(str [i+1] ==a) {temp. push_back (я); i++; }temp. push_back (й); break;k: temp. push_back (к); break;l: temp. push_back (л); break;m: temp. push_back (м); break;n: temp. push_back (н); break;o: temp. push_back (о); break;p:(str [i+1] ==h) {temp. push_back (ф); i++; }temp. push_back (п); break;q: temp. push_back (б); break;r: temp. push_back (р); break;s:(str [i+1] ==h) {temp. push_back (ш); i++; }temp. push_back (с); break;t: temp. push_back (т); break;u: temp. push_back (у); break;v: temp. push_back (в); break;w: temp. push_back (р); break;x: break;y: temp. push_back (у); break;z:(str [i+1] ==h) {temp. push_back (ж); i++; }temp. push_back (з); break;_: temp. push_back ( ); break;\: temp. push_back (ь); break;: temp. push_back (str [i]);
}++;
}*returnStr = new char [temp. size () +1];(int i=0; i<temp. size (); i++)
{[i] =temp [i];
}
// returnStr [temp. size ()] =? ;[temp. size ()] =\0;[0] =toupper (returnStr [0]);(temp. size () >8)addspaces (returnStr);return addspaces (str1);
}toguess:: havequestions ()
{(int i=0; i<Tresponses. size (); i++)
{(int j=0; j<Tresponses [i]. idQuest. size (); j++)
{(Tresponses [i]. idQuest [j]! =-1) return true;
}
}false;
}toguess:: populatQuestion ()
{maxCount = 0;mid = 0;(int _id=1; _id<=questions [questions. size () - 1]. id; _id++) // для каждого вопроса
{thisCount=0;(int i=0; i<Tresponses. size (); i++)
{(int j=0; j<Tresponses [i]. idQuest. size (); j++)
{(Tresponses [i]. idQuest [j] ==_id) thisCount++;(thisCount>maxCount)
{=thisCount;= _id;
}
}
}
}mid;
}
Литература
1.Герберт Шилдт "Самоучитель C++" БХВ-Петербург, 2003 г.687 стр.
2.MSDN
.С. Окулов Программирование в алгоритмах. Бином, 2007г
.Б. Страуструп Язык программирования С++
.Р. Лафоре ООП в С++
.Д. Либерти, Б. Джонс C++ за 21 день Вильямс
.Разработка приложений на MS Visual Studio. Учебный курс. (Официальное пособие Microsoft).
.В.М. Виртас Методы решения задач по информатике" Бином, 2007г