void copyDicoLineInWord (int line, Word word, char dicoList[][TAILLE])
{
int letter = 0;
for (; dicoList[line][letter]!='\0'; letter++)
{
word[letter] = dicoList[line][letter];
}
word[letter]='\0';
}
int getNewLine (int &begin, int &end, int line, int beforeOrAfter)
{
int result;
if (beforeOrAfter == 1)
{
begin = line;
}
else if (beforeOrAfter == -1)
{
end = line;
}
result = (begin+end)/2;
return result;
}
int compareWords(Word rightWord, Word word)
{
bool correctWordEquality = true;
int placeWord = 0;
for (int i =0; i < countLetters(word); i++)
{
if (word[i] != rightWord[i])
{
placeWord = beforeOrAfter (word[i], rightWord[i]);
i = countLetters(word);
correctWordEquality = false;
}
}
if (correctWordEquality)
{
for (int j=0; j < countLetters(rightWord); j++) //Boucle seulement si le word est plus
{ //court ou de la même taille et égal au
if (word[j] != rightWord[j]) //mot correct.
{
j = countLetters(rightWord);
placeWord = 1; //Puisque le mot correct est plus
} //long il faut voir après.
else
{
placeWord = 0;
}
}
}
reinitializeWord (word);
return placeWord;
}
int dichotomyDicoValidityReiteration(Word playerWord, char dicoList[][TAILLE])
{
int begin = 1, end = getLenghtDico(), line = -2, save, beforeOrAfter=0;
Word dicoWord;
bool difference;
do
{
save = line;
line = getNewLine (begin, end, line, beforeOrAfter);
copyDicoLineInWord (line, dicoWord, dicoList);
beforeOrAfter = compareWords (playerWord, dicoWord);
if (beforeOrAfter!=0)
{
difference = true;
}
else if (beforeOrAfter == 0)
{
difference = false;
}
if (save==line)
{
save = -1;
difference = false;
}
}
while (difference);
return save;
}