Другие языки программирования и технологии
Помогите пожалуйста решить задачку (Pascal)!!!
Дана строка. Найти в ней те слова, которые начинаются и оканчиваются гласной буквой. Заранее спасибо!...
работает только с русскими глассными буквами:
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.
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.
Доброго времени суток.
Можно значительно проще.
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
Удачи!
Можно значительно проще.
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
Удачи!
Похожие вопросы
- Помогите, пожалуйста решить задачку!!! (Pascal)
- Помогите пожалуйста решить задачку на С++ очень нужно (((
- Помогите пожалуйста решить в Pascal очень нужно
- Помогите, пожалуйста, решить задачку на паскале. Заранее благодарна.
- Помогите пожалуйста решить задачку на паскале! (циклы с параметром)!!за ранее спасибо!
- Помогите пожалуйста решить задачку на языке с++ С ув. Юля
- Помогите, пожалуйста решить 2 задачки, только они остались, а решить не выходит плз (Turbo PASCAL)
- Помогите пожалуйста решить задачу в Pascal ABC
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Помогите пожалуйста решить задачу в Pascal