Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Сообщение от MedvedS
Задача 1 В тексте определить количество гласных и согласных букв в самом длинном и самом коротком слове.
|
Так, ну написал я программу. Вроде работает, как надо. Вот только сомневаюсь - будет ли толк, потому как сильно непростая она. Как и задача. Но попробуйте разобраться. Если что - спрашивайте.
Код:
TYPE
ChSet=Set of Char;
CONST
ChS1:ChSet=['б','в','г','д','ж','з','к','л','м','н',
'п','р','с','т','ф','х','ц','ч','ш','щ',
'Б','В','Г','Д','Ж','З','К','Л','М','Н',
'П','Р','С','Т','Ф','Х','Ц','Ч','Ш','Щ'];
ChS2:ChSet=['а','е','и','о','у','ы','э','ю','я',
'А','Е','И','О','У','Ы','Э','Ю','Я'];
VAR
S:String;
Wrd:ARRAY[1..100] of String;
i,j,n,m,Num_Short,Num_Long,
Short_vowel,Short_consonant,Long_vowel,Long_consonant:Byte;
BEGIN
WriteLn('Enter the string:');
ReadLn(S);
j:=1;
i:=1;
If S[1]=' ' then
Repeat
Inc(i);
Until S[i]<>' ';
n:=0;
While S[i+n]<>' ' do
begin
Inc(n);
end;
Wrd[j]:=Copy(S,i,n);
REPEAT
Inc(j);
i:=i+n+1;
If S[i]=' ' then
Repeat
Inc(i);
Until S[i]<>' ';
n:=0;
While (S[i+n]<>' ') and ((i+n)<=Length(S)) do
begin
Inc(n);
end;
Wrd[j]:=Copy(S,i,n);
UNTIL (i+n)>Length(S);
m:=j;
Num_Short:=1;
Num_Long:=1;
Short_vowel:=0;
Short_consonant:=0;
Long_vowel:=0;
Long_Consonant:=0;
For j:=1 to m do
begin
if Length(Wrd[j])<Length(Wrd[Num_Short]) then Num_Short:=j;
if Length(Wrd[j])>Length(Wrd[Num_Long]) then Num_Long:=j;
end;
For i:=1 to Length(Wrd[Num_Short]) do
begin
If Wrd[Num_Short][i] in ChS1 then Inc(Short_consonant);
If Wrd[Num_Short][i] in ChS2 then Inc(Short_vowel);
end;
For i:=1 to Length(Wrd[Num_Long]) do
begin
If Wrd[Num_Long][i] in ChS1 then Inc(Long_consonant);
If Wrd[Num_Long][i] in ChS2 then Inc(Long_vowel);
end;
WriteLn;
WriteLn('Самое короткое слово - "',Wrd[Num_Short],'"');
WriteLn('Количествово согласных - ',Short_consonant);
WriteLn('Количество гласных - ',Short_vowel);
WriteLn;
WriteLn('Самое длинное слово - "',Wrd[Num_Long],'"');
WriteLn('Количествово согласных - ',Long_consonant);
WriteLn('Количество гласных - ',Long_vowel);
ReadLn;
END.
P.S. А что касается "Задачи 3", то она настолько тривиальна, что вполне сами справитесь. Я этим заниматься не буду.
|