Пользователь вводит набор слов (предложений). Необходимо сформировать из встречающихся в предложении слов их массив. При этом повторяющиеся слова не должны входить в массив дважды.
Например:
Предложение: «I am going at home. They are going at home too.»
Массив строк: [‘i’, ‘am’, ‘going’, ‘at’, ‘home’, ‘they’, ‘are’, ‘too’]
u: string;
ws: array[1..100] of string;
w: string;
len: integer;
i, j, q: byte;
writeln('Введите текст: '); read(u); len := length(u);
i := 1; while i = len do
if (lowercase(u[i]) >= 'a') and (lowercase(u[i]) = 'z') then begin
w := lowercase(u[i]); i := i + 1;
while (i = len) and ((lowercase(u[i]) >= 'a') and (lowercase(u[i]) = 'z')) do begin w := w + lowercase(u[i]); i := i + 1; end;
j := 1; while (j = q) and (wws[j]) do j := j + 1; if j > q then begin q := q + 1; ws[q] := w; end;
else i := i + 1;
for i := 1 to q do writeln(ws[i]);
Полностью программа выделения слов из строки выглядит так:
var u: string; ws: array[1..100] of string; w: string; len: integer; i, j, q: integer; begin writeln('Введите текст: '); read(u); len := length(u); i := 1; while i = len do if (lowercase(u[i]) >= 'a') and (lowercase(u[i]) = 'z') then begin w := lowercase(u[i]); i := i + 1; while (i = len) and ((lowercase(u[i]) >= 'a') and (lowercase(u[i]) = 'z')) do begin w := w + lowercase(u[i]); i := i + 1; end; j := 1; while (j = q) and (wws[j]) do j := j + 1; if j > q then begin q := q + 1; ws[q] := w; end; end else i := i + 1; for i := 1 to q do writeln(ws[i]); end.
Комментарии
Анаграмма
Одно слово является анаграммой другого, если оно может быть получено перестановкой всех букв данного(колос=сокол). Помогите составить программу, которая находит все анаграммы в данном наборе слов и подсчитывает их число.
сделать проверку по другому
if (lowercase(u[i]) >= 'a') and (lowercase(u[i]) if u[i] in ['a'..'z','A'..'Z'] then
я думаю так будет на много понятнее
еще проще if lowercase(u[i])
еще проще
if lowercase(u[i]) in ['a'..'z'] then
не применима
Нельзя применять in в строках