Другие языки программирования и технологии

Помогите написать задачу на Pascal 7.0

Дана строка текста.Выбрать слова состоящие из одинаковых букв(aaa, xx, gggg) и выдать их на экран в порядке возрастания длинны
Доброго времени суток.

Вариантов масса. Вот один из возможных.

type
TWordInfo = record
WrdStart, WrdLen : Byte; {посколько строка ТР, то достаточно такого типа}
end;

const WordDelim : set of Char = [' '];

var
A : array[1..255] of TWordInfo;
J, n, SLen : integer;

n := 0;
J := 1;
SLen := Length(S);
while J <= SLen do begin
while (J <= SLen) and (S[J] in WordDelims) do Inc(J); {пока разделители продвигаемся по строке}
if J <= SLen then Inc(n); {увеличили счетчик}
A[n].WrdStart := J; {запомнили позицию начала слова}
while (J <= SLen) and not(S[J] in WordDelims) do Inc(J); {ищем конец слова}
A[n].WrdLen := J - A[n].WrdStart; {получили длину слова}
end;

Теперь массив А содержит информацию о начальной позиции каждого слова и его длине. Дальше дело техники. Сортируем массив по возрастанию поля A[n].WrdLen, а потом берем из массива начало очередного слова и его длину, выделяем из строки подстроку и проверяем ее на предмет одинаковых символов в ней и если да, выводим ее на экран.

Сортировать можно так

for i := 1 to n do
for j := 1 to n - i do
if A[j].WrdLen > A[j + 1].WrdLen then begin
T := A[j];
A[j] := A[j + 1];
A[j + 1] := T;
end;

Переменная Т имеет тип элемента массива.

Выделять подстроки можно так

for i:=1 to n do begin
S1 := Copy(S, A[ i ].WrdStart, A[ i ].WrdLen);
{проверочку на одинаковые символы в S1 сами сделайте}
end;

Удачи!
Вадим Тиш***
Вадим Тиш***
59 613
Лучший ответ
а чем ты на уроках слушаешь?