A
a9x
Задание: написать программу, которая считывает txt файл - Шекспир во оригинале на английском, и считает слова, которые Шекспир употребил в произведении - все слова, кроме тех, которые повторяются. Главное - чтобы прога считала слова в разных формах с окончаниями -ing, -ed, -ies и тд - за одно слово. Я написал программу, которая считает слова, и те, которые повторяются - считает за одно слово. Помогите пож с разными формами.
Например слова change, changed - считать за одно слово.
Вот моя прога
Например слова change, changed - считать за одно слово.
Вот моя прога
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
// Все, что считается разделителем
Separator = ['''', '"', '&', '.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
sL, sLtxt: TStringList;
i: integer;
f: TextFile;
s: string;
begin
sL := TStringList.Create; // Создаем переменную для хранения слов
sL.Sorted :=true; // Назначаем ей св-ва Сортировать
sL.Duplicates := dupIgnore; // и игнорировать дубликаты
AssignFile(f,'Otello.txt'); // Связываем f с текстовым файлом
Reset(f); // Начало файла
while not EOF(f) do // Пока не дойдем до конца
begin
ReadLn(f,s); // Читаем строку
for i := 1 to Length(s) do // Если есть кавычка ('), заменяем на пробел
if s[i] = '''' then s[i] := ' ';
ExtractStrings(Separator, [' '], PAnsiChar(s), sL); // и записываем их в sL
end;
ListBox1.Items.Assign(sL); // Выводим результат в ЛистБокс
sL.Free; // Освобождаем память от ненужных больше переменных
CloseFile(f); // Закрываем файл
ShowMessage(IntToStr(ListBox1.Count)); // Показываем кол-во найденных слов
end;
end.