Показать сообщение отдельно
Старый 04.01.2012, 19:52   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Второе задание (тут возможно потребуется правка; подробно - после листинга):
Код:
Uses CRT;
Const
 M=20;
 N=10;
 Vow=['A','E','I','O','U','Y'];
VAR
 W:Array[1..M,1..N] of String;
 i,j,k,N2v,q:Integer;
 Lng:Array[1..M,1..N] of Byte;
 C:Set of Byte;
 b:Boolean;

BEGIN
 C:=[];
 Randomize;
 ClrScr;
 TextColor(7);
 Writeln('Initial Array:');
 Writeln;
 For i:=1 to M do
  Begin
   For j:=1 to N do
    begin
     Lng[i,j]:=2+Random(5);
     W[i,j]:='';
     For k:=1 to Lng[i,j] do
      W[i,j]:=W[i,j]+Chr(65+Random(26));
     Write(W[i,j]:7);
    end;
   Writeln;
  End;
 Writeln('Press "Enter" to continue...');
 Readln;
 ClrScr;
 N2v:=0;
 Writeln('Words containing 2 vowels are red:');
 For i:=1 to M do
  Begin
   For j:=1 to N do
    begin
     q:=0;
     For k:=1 to Lng[i,j] do
      If W[i,j][k] in Vow then Inc(q);
     If q=2 then
      begin
       Inc(N2v);
       textcolor(12);
       Write(W[i,j]:7);
      end
     else
      begin
       textcolor(7);
       Write(W[i,j]:7);
      end;
    end;
   Writeln;
  End;
  Textcolor(7);
 Writeln(N2v,' words');
 Writeln('Press "Enter" to continue...');
 Readln;
 ClrScr;
 N2v:=0;
 Writeln('Words in columns containing at least 1 word finishing with vowel (blue):');
 For j:=1 to N do
  begin
   b:=false;
   i:=0;
   Repeat
    Inc(i);
    If W[i,j][Lng[i,j]] in Vow then b:=true;
   Until b or (i=M);
   If b then C:=C+[j];
  end;
 For i:=1 to M do
  Begin
   For j:=1 to N do
    begin
     If j in C then
      begin
       Inc(N2v);
       textcolor(1);
       Write(W[i,j]:7);
      end
     else
      begin
       textcolor(7);
       Write(W[i,j]:7);
      end;
    end;
   Writeln;
  End;
 Textcolor(7);
 Writeln(N2v,' words');
 Readln;
End.
Возможные исправления связаны с тем, что я использую черный DOS-экран низкого разрешения, и указанное количество слов у меня в него не лезет. Если у Вас этого ограничения нет, то следует строку
Lng[i,j]:=2+Random(5);
заменить на
Lng[i,j]:=2+Random(6);
и во всех трёх выводах массива вместо строк
Write(W[i,j]:7);
записать
Write(W[i,j]:8);
Далее, если у Вас экран не черный, а белый, то, вероятно, всюду строку
textcolor(7);
следует заменить на
textcolor(0);
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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