Ваш список «предполагается как» не включает ama
, несмотря на то, что он соответствует критериям. Вероятно, вам следует разъяснить это с воспитателем.
После уточнения следующего шага, который вам нужно предпринять, необходимо удалить дубликаты с вашего вывода. Ваш вывод на самом деле кажется правильным, но из-за того, что он все еще имеет дублированные значения, поэтому я бы начал с того, что у вас есть.
Учитывая, что это классная работа, я не дам вам полное решение, но я будет сказать, что один вариант, чтобы отсортировать слова (например, с qsort
), а затем выводить их таким образом, что дубликаты удаляются.
Следующий псевдокод является одним из способов сделать это с отсортированного массива:
output word[0]
for index = 1 to word.numelements - 1:
if word[index] != word[index - 1]:
output word[index]
Если у вас есть проблемы получать qsort
вести себя, как вы ожидали (и многие из них), еще один вариант, чтобы просто удалить дубликатами с чем-то вроде:
for index1 = 0 to word.numelements - 2:
for index2 = index1 + 1 to word.numelements - 1:
if word[index1] == word[index2]:
word[index2] = ""
и затем выводит те, которые не были установлены в пустую строку:
for index = 0 to word.numelements - 1:
if word[index] != "":
output word[index]
Обратите внимание, что я оставляю это до вас, чтобы перевести этот псевдо-код в C, но вы должны помнить несколько вещей:
- Сравнение строк должно быть сделано с
strcmp()
, а не ==
и !=
,
- Вы можете установить, чтобы строки были пустыми, просто установив свой первый символ в байт NUL:
str[0] = '\0'
.
- Вы можете проверить, является ли строка пустой, используя
strlen()
, или путем проверки первого символа установлен в NUL-байт.
Просто общее в программировании: избегайте функций длиной более 20 строк. Меньшие функции более читабельны более эффективными, легче отлаживаются и легче писать. – Antzi