Здравствуйте, Всем! Помогите решить эту задачку, знаю как найти длинное, короткое слова, а как быть с гласными не знаю.( если не сложно напишите весь код программы, буду тогда разбираться, уже сил никаких нет...
Найти в строке самое короткое и самое длинное слова, в которых одновременно присутствуют все гласные буквы.
Использовать функцию, возвращающую строку,содержащую слова, которые требуется найти в исходной строке.
ну вот...
var s,word: string;
max,p: integer;
begin
writeln ('vvedite stroky');
readln (s);
max:=0;
repeat
begin
p:=pos(' ',s);
if p=0 then
begin
if length(s)>max then
begin
max:=length(s);
word:=copy(s,1,length(s));
end;
delete(s,1,max);
end
else if (p-1)>max then
begin
max:=p-1;
word:=copy(s,1,p-1);
delete(s,1,p);
end
else if ((p-1)<max) or ((p-1)=max) then delete(s,1,p);
end;
until length(s)=0;
writeln('Max dlinna slova: ',max,'');
writeln('Samoe dlinnoe slovo: ',word,'');
readln
end.
например так можно поверить:
Объявляешь:
var c:set of char;
c:=['а','о','у']; {и так далее, все гласные}теперь если c=[], т.е. пустое, значит в слове встречались все буквы из множества.
s:='aaacdfbgcght'; {твое слово}
for i:=1 to length (s) do c:=c-[s[i]]; {вычитаем из множества гласных все буквы по очереди}
Спасибо большое!щас попробую что-нибудь сделать..если что, спрошу)
О,а куда это надо вставить в моем куске программы?
А забыцай в функцию:
Function Test (s:string): boolean;
var c:set of char;
i:integer;
begin
c:=['а','о','у']; {и так далее, все гласные}
for i:=1 to length (s) do c:=c-[s[i]]; {вычитаем из множества гласных все буквы по очереди}
if c=[] then test:=true else test:=false;
end;
Большое спасибо!!!