Program P6;
{--------------------------------------------------------------
   Se da un text. Sa se afiseeze:
   a) vocalele care se repeat;
   b) consoanele care se repeat;
   c) cifrele care se repeat exact de trei ori.
 --------------------------------------------------------------}
Uses CRT;
{--------------------------------------------------------------}
Const
   Vocale = 'AEIOUY';
   cCif  = 1;
   cVoc  = 2;
   cCons = 3;
   cAlta = 4; 
{--------------------------------------------------------------}
Var
   i: integer; 
   s, v, c, cif: string; 
   nc: array[0..9] of byte;  
{--------------------------------------------------------------}
function TipCh(c: char): byte;
var o: byte;
begin
   c := UpCase(c);
   TipCh := cCif;  if(c>='0')and(c<='9')then exit;
   TipCh := cAlta; if(c<'A')or(c>'Z')then exit;
   TipCh := cVoc;  for o := 1 to length(Vocale) do if(c=Vocale[o])then exit;
   TipCh := cCons;
end;
{--------------------------------------------------------------}
function inStr(c: char; s: string): boolean;
var i: word;
begin
  i := length(s);
  while(i>0)and(c<>s[i])do dec(i);
  inStr := i>0;
end;
{--------------------------------------------------------------}

BEGIN
   CLRSCR;
   write(' - Tapeaza un text!');
   c := readkey; { Pauza. Prindem caracterul care va fi sters }
   clrscr;       { Stergem mesajul }
   write(c);     { Afisam caracterul sters }
   readln(s);    { Textul introdus de la tastatura }
   s   := c + s; { Adaugam caracterul sters }
   v   := '';
   c   := '';
   cif := '';
   for i := 0 to 9 do nc[i] := 0;

   { Prelucrarea textului s . . . }   
   for i:=1 to length(s) do case TipCh(s[i]) of
     cVoc:  if(not inStr(UpCase(s[i]),v)) then v := v + ' ' + UpCase(s[i]);
     cCons: if(not inStr(UpCase(S[i]),c)) then c := c + ' ' + UpCase(s[i]);
     cCif:  begin
               if(not inStr(s[i],cif)) then cif := cif + s[i];
               inc(nc[ord(s[i])-48]);
            end;
     else
   end;
   
   { Afisharea rezultatelor }
   writeln;
   writeln('Vocalele care se repeta: ', v);
   writeln('Consoanele care se repeta: ', c);
   write('Cifrele care se repeat exact de trei ori: ');
      for i:=0 to 9 do if nc[i] = 3 then write(' ',i);
   
   READKEY;
END.
