Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки

Автор: gyrosa 11.12.2007 18:54

Здравствуйте, Всем! Помогите решить эту задачку, знаю как найти длинное, короткое слова, а как быть с гласными не знаю.( если не сложно напишите весь код программы, буду тогда разбираться, уже сил никаких нет...


Найти в строке самое короткое и самое длинное слова, в которых одновременно присутствуют все гласные буквы.
Использовать функцию, возвращающую строку,содержащую слова, которые требуется найти в исходной строке.

Автор: Lapp 11.12.2007 19:16

Цитата(gyrosa @ 11.12.2007 14:54) *
знаю как найти длинное, короткое слова,
Выложи тут то, что сделала. Поможем.

Автор: gyrosa 11.12.2007 19:32

ну вот...

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.

Но ведь так только находим самое длинное слово(короткое аналогично), а как совместить с гласными не знаю..(

Автор: Malice 11.12.2007 19:52

например так можно поверить:
Объявляешь:

var c:set of char;


c:=['а','о','у']; {и так далее, все гласные}
s:='aaacdfbgcght'; {твое слово}
for i:=1 to length (s) do c:=c-[s[i]]; {вычитаем из множества гласных все буквы по очереди}

теперь если c=[], т.е. пустое, значит в слове встречались все буквы из множества.

Автор: gyrosa 11.12.2007 20:03

Спасибо большое!щас попробую что-нибудь сделать..если что, спрошу) give_rose.gif

Автор: gyrosa 11.12.2007 20:27

О,а куда это надо вставить в моем куске программы?

Автор: Malice 11.12.2007 21:20

А забыцай в функцию:


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;

И вызывай ее где тебе надо.

Автор: gyrosa 13.12.2007 22:24

Большое спасибо!!! give_rose.gif