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

Помогите пожалуйста решить задачку (Pascal)!!!

Дана строка. Найти в ней те слова, которые начинаются и оканчиваются гласной буквой. Заранее спасибо!...
Valeri Duvanov
Valeri Duvanov
294
работает только с русскими глассными буквами:

uses crt;
var s, s1: String;
i: Integer;
flag: Boolean;
begin
clrscr;
writeln('Введите строку: ');
readln(s);
flag:=false;
s1:='';
for i:=1 to Length(s) do
begin
if ((i=1)and
((s='у')or(s='е')or(s='ы')or(s='а')or(s='о')or(s='э')or(s='я')or(s='и')or(s='ю'))) then
flag:=true;
if (i>1) then
if ((s[i-1]=' ')and
((s='у')or(s='е')or(s='ы')or(s='а')or(s='о')or(s='э')or(s='я')or(s='и')or(s='ю'))) then
flag:=true;
if flag then s1:=s1+s;
if (s=' ') and flag then
if ((s[i-1]='у')or(s[i-1]='е')or(s[i-1]='ы')or(s[i-1]='а')or
(s[i-1]='о')or(s[i-1]='э')or(s[i-1]='я')or(s[i-1]='и')or(s[i-1]='ю')) then
begin flag:=false; writeln(s1); s1:='' end else begin flag:=false; s1:='' end;
if (i=length(s)) and flag then
if ((s='у')or(s='е')or(s='ы')or(s='а')or
(s='о')or(s='э')or(s='я')or(s='и')or(s='ю')) then
begin flag:=false; writeln(s1); s1:='' end;
end;

readkey;
end.
Vl@:d[M4A1] ()Лиг@рх
Vl@:d[M4A1] ()Лиг@рх
3 607
Лучший ответ
Доброго времени суток.

Можно значительно проще.

uses Crt;
const Vocalic : String = 'аеёиоуыэюя'; {глассные}
var S, S1 : String;
begin
ClrScr;
WriteLn('Введите строку: ');
ReadLn(s);
S := S + ' '; {чтобы не потерять последнее слово}

while Pos(' ', S) > 0 do begin
S1 := Copy(S, 1, Pos(' ', S)-1); {копируем первое слово из входной строки}
Delete(S, 1, Pos(' ', S)); {удаляем его из нее вместе с пробелом}

if (Pos(S1[1], Vocalic) > 0) and (Pos(S1[Length(S1)], Vocalic) > 0) then WriteLn(S1);
end;

ReadLn;
end.

Вместо константы const Vocalic : String = 'аеёиоуыэюя'; {глассные} можно объявить множество гласных символов и тогда проверка будет выглядеть так

if (S1[1] in Vocalic) and (S1[Length(S1)] in Vocalic) then WriteLn(S1);

Если в строке возможны несколько пробелов подряд, то проверку на принадлежность к гласным первого и последнего символа слова нужно делать только при условии

if S1 <> '' then ...

Или, если используется компилятор Delphi, после удаления очередного слова из входной строки обращаться к функции отсечения ведущий и конечных пробелов - Trim

Удачи!