Я пытаюсь прочитать файл, содержащий серию слов и предложений.Затем необходимо сохранить уникальные слова и вести подсчет каждого отдельного слова. Слова должны быть упорядочены по убыванию количества и, если есть несколько слов с одинаковым количеством, по алфавиту.(Этот порядок может быть достигнут при чтении слов, частично при чтении слов или в конце всей обработки ввода.) В конце я хочу вывести первые и последние десять слов в отсортированном списке вместе сих количество.
Как исправить эту ошибку const char*
.Я не знаю, что не так в моем коде или где и что именно я должен изменить:
[Ошибка] недопустимое преобразование из 'char' в 'const char *' [-fpermissive]
[Ошибка] нет совпадения для «operator <=» (типы операндов - «WordType» и «WordType») </p>
struct WordType
{
int word;
int len, count;
};
const int MaxWords=50000;
char Words[MaxWords*10];
WordType Counters[MaxWords];
int NumWords=0;
bool Compare(WordType &A, WordType &B){
if(A.count<B.count)return true;
if(A.count>B.count)return false;
char w1[50],w2[50];
strncpy(w1,Words[A.word],A.len); //Error comes here
w1[A.len]='\0';
w2[B.len]='\0';
strncpy(w2,Words[A.word],B.len); //Error comes here
return strcmp(w1,w2) < 0 ;
}
int partition (int low, int high)
{
WordType pivot = Counters[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++)
{
if (Compare(Counters[j] <= pivot)) //Error comes here
{
i++;
swap(&Words[i], &Words[j]);
}
}
swap(&Words[i + 1], &Words[high]);
return (i + 1);
}
void quickSort(int low, int high)
{
if (low < high)
{
int pi = partition(low, high);
quickSort(low, pi - 1);
quickSort(pi + 1, high);
}
}