Передача списка слов для программы анаграммы - PullRequest
0 голосов
/ 18 августа 2011

Я почти закончил свою программу, но есть одна последняя ошибка, с которой у меня возникают проблемы с выводом. Предполагается, что программа проверяет около 10 зашифрованных слов по списку слов, чтобы увидеть, что зашифрованные слова являются анаграммами. Чтобы сделать это, я алфавитизировал каждое слово в списке слов (apple станет aelpp), установил его в качестве ключа карты и сделал соответствующую запись исходным неалфавитизированным словом.

Программа запутывается, когда дело доходит до записей на карте. Если длина записи не превышает 6 символов, программа помечает случайный символ в конце строки. Я сузил, что может быть причиной проблемы в один цикл:

while(myFile){
  myFile.getline(str, 30);
  int h=0;   
  for (; str[h] != 0; h++)//setting the initial version of str
  {
      strInit[h]=str[h]; //strInit is what becomes the entry into the map.
  }
  strInit[h+1]='\0';    //I didn't know if the for loop would include the null char
  cout<<strInit; //Personal error-checking; not necessary for the program
 }

И, если это необходимо, вот вся программа:

Программа

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Предотвращение проблем, используйте обычные функции:

getline(str, 30);
strncpy(strInit, str, 30);

Предотвратить больше проблем, используйте стандартные строки:

std::string strInit, str;
while (std::getline(myFile, str)) {
    strInit = str;
    // do stuff
}
0 голосов
/ 18 августа 2011

Лучше всего вообще не использовать сырые массивы C!Вот версия, использующая современный C ++:

#include <string>

std::string str;

while (std::getline(myFile, str))
{
  // do something useful with str
  // Example: mymap[str] = f(str);
  std::cout << str; //Personal error-checking; not necessary for the program
}
...