Мне дали это задание в колледже, которое состоит из следующего:
Если слово - это массив букв, а словарь - это массив слов, учитывая функцию, которая определяет, является ли словопрефикс другого. Код на паскале - это функция, которая создает односторонний связанный список слов, являющихся префиксами данного слова.
Заголовок функции должен быть следующим: function CompleteWord (префикс: WordType; словарь:VocabularyType): WordList;
WordType и VocabularyType - это просто верхние массивы, максимальное количество ячеек которых определяется константами с именами MaxVocabulary и MaxLength
Мне удалось закодировать булеву функцию с именем itsPrefix , который определяет, является ли данное слово префиксом другого, поэтому мне оставлено только кодирование функции CompleteWord, а также мне не разрешено использовать следующие средства pascal: использовании, crlscr, gotoxy, crt, readkey, longint, string, break, так что я могу использовать только такие вещи, как арифметические и логические операторы, если, case, для, while, repeat.
Так, например, если я применяю функцию к слову HELL и словарь HELLO, BIRD, TABLE, HELL функция вернет менясписок, содержащий слова HELLO и HELL
Список WordList определен так, что:
type
WordList= ^cell;
cell= record
info : WordType;
following: WordList
end;
Хотя он встречается с ошибкой, это лучшее, что мне удалось закодировать
function CompleteWord(prefix: WordType; vocabulary: VocabularyType) : WordList;
var
g:integer;
ListaAUX:WordList;
begin
new(ListaAUX);
ListaAUX:=nil;
for g:=1 to MaxVocabulary do
if (itsPrefix(prefix,vocabulary[g])) then
begin
new(ListaAUX^.following);
ListaAUX:=ListaAUX^.following;
ListaAUX^.info:=vocabulary[g];
end;
ListaAUX^.following:=nil;
CompleteWord:=ListaAUX;
end;
Примечание: булева функция itsPrefix хорошо работает сама по себе и с другими функциями, поэтому проблема не в этом, код функции не предоставляется, так как он использует различные другие функции, которые делаютслишком большой вопрос
Может кто-нибудь помочь мне разобраться? я изо всех сил стараюсь сделать это