Показать сообщение отдельно
Старый 07.12.2010, 22:08   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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", то она настолько тривиальна, что вполне сами справитесь. Я этим заниматься не буду.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070