Listing FRACTII.PAS
Program
typeVector=array['A'..'Z'] of Boolean;
varSus:Vector;
{ Sus[X]=True daca litera X este la numarator }
Last:Char; { Ultima litera }
procedureReadData;
vari:Integer;
C:Char;
begin
forC:='A' to 'Z' do Sus[C]:=False;
Assign(Input,'FRACTIE.IN');
Reset(Input);
ReadLn(i);
Last:=Chr(Ord('A')+i-1);
while not Eoln do
begin Read(C); Sus[C]:=True end;
Close(Input)
end;
procedureParant;
var Curent:Vector;
Open,i:Integer; { Nr. de ( }
C,C2:Char;
begin
Curent['A']:=True;
for C:='B' to Last do Curent[C]:=False;
Write('A:');
Open:=0;
for C:='C' to Last do
begin
if Sus[C]<>Curent[C]
then
begin
Write('(');
for C2:=C to Last do
Curent[C2]:=not Curent[C2];
Inc(Open)
end;
Write(Pred(C), ':')
end;
Write(Last);
for i:=1 to Open do
Write(')');
WriteLn
end;
Begin
ReadData;
Assign(Output,'FRACTIE.OUT'); Rewrite(Output);
if Last='A'
then
if Sus['A']
then WriteLn('A')
else WriteLn('NU')
else
if (not Sus['A']) or Sus['B']
then WriteLn('NU')
else Parant;
Close(Output)
End.