VAR ADN, complementaire : string[255];
i : integer ;
brinOK : boolean ;
Adenine, Thymine, Guanine, Cytosine : integer
;
BEGIN
(* lecture d'un brin d'ADN avec vérification *)
repeat
writeln('donnez-moi un brin d''ADN : ') ;
readln(ADN) ;
brinOK:=true ;
for i:=1 to length(ADN) do
if (upcase(ADN[i])<>'A')
and (upcase(ADN[i])<>'T') and
(upcase(ADN[i])<>'G')
and (upcase(ADN[i])<>'C')
then
brinOK:=false ;
if (not brinOK) then writeln('ce n''est pas
un brin d''ADN') ;
until brinOK ;
(* liste des bases qui compose le brin d'ADN *)
writeln ;
writeln('Liste des bases de ce brin :') ;
for i:=1 to length(ADN) do
case upcase(ADN[i]) of
'A' : writeln('Adenine')
;
'T' : writeln('Thymine')
;
'G' : writeln('Guanine')
;
'C' : writeln('Cytosine')
;
end ;
(* construction du brin complémentaire *)
complementaire:='' ;
for i:=length(ADN) downto 1 do
case upcase(ADN[i]) of
'A' : complementaire:=complementaire+'T'
;
'T' : complementaire:=complementaire+'A'
;
'G' : complementaire:=complementaire+'C'
;
'C' : complementaire:=complementaire+'G'
;
end ;
(* ATTENTION : on ne peut pas écrire complémentaire[i]:=...
*)
writeln ;
writeln('Brin complémentaire :') ;
writeln(complementaire) ;
(* statistique sur les bases *)
Adenine:=0 ; Thymine:=0 ; Guanine:=0 ; Cytosine:=0 ;
for i:=1 to length(ADN) do
case upcase(ADN[i]) of
'A' : Adenine:=Adenine+1
;
'T' : Thymine:=Thymine+1
;
'G' : Guanine:=Guanine+1
;
'C' : Cytosine:=Cytosine+1
;
end ;
writeln ;
writeln('Ce brin d''ADN contient :') ;
writeln(Adenine,' adénines, ',Thymine,' thymines, ',Guanine,
'guanines, ',Cytosine,' cytosines') ;
(* vérifier si le brin d'ADN est palindromique *)
brinOK:=true ;
for i:=1 to (length(ADN) div 2) do
if (ADN[i]<>ADN[length(ADN)+1-i]) then brinOK:=false
;
writeln ;
if brinOK
then writeln('Ce brin EST un palindrome')
else writeln('Ce brin n''est PAS un palindrome') ;
END.