Posté par
infophile infophileBonsoir
Je suis sur un autre problème, intéressant mais mon programme ne fournit rien (et encore une fois aucune erreur n'est signalée).
Citation :
But du problème : On possède deux séquences d'ADN formée des bases G,T,A,C. Soit Séquence celle dont la longueur est la plus grande et Extrait l'autre. On cherche à écrire un algorithme qui teste si Extrait est une sous-séquence de Séquence.
Pour fixer les idées, on dit que v est une sous-séquence de u si on retrouve les bases de v dans u et ceci dans le même ordre.
Exemple : u = GTACGTTA et v = GCTA alors on a bien v sous-séquence car u = GTACGTTA
Voilà mon code :
Citation :
Program genome;
uses dos,crt;
Type Seq=array[1..20] of char;
var i,j,LgSequence, LgExtrait : integer;
Sequence, Extrait : Seq;
baseseq, baseext : char;
Function EstSousSeq (LgSequence, LgExtrait : Integer; Sequence, Extrait : Seq) : Boolean;
Var IndiceSequence, IndiceExtrait : Integer;
Begin
IndiceSequence := 1;
IndiceExtrait := 1;
while (IndiceExtrait <= LgExtrait) and (IndiceSequence <= LgSequence) do
begin
if Extrait[IndiceExtrait] = Sequence[IndiceSequence]
then
Inc(IndiceExtrait);
Inc(IndiceSequence);
end;
EstSousSeq := (IndiceExtrait > LgExtrait);
End;
begin
writeln('Entrez la longueur de la sequence');
readln(LgSequence);
writeln('Entrez la longueur de l extrait');
readln(LgExtrait);
for i:=1 to LgSequence do
begin
writeln('Entrez dans la sequence le terme ',i);
readln(baseseq);
Sequence[i]:=baseseq;
end;
for j:=1 to LgExtrait do
begin
writeln('Entrez dans l extrait le terme ',j);
readln(baseext);
Extrait[j]:=baseext;
end;
for i:=1 to Lgsequence do write(Sequence[i],' ');
writeln;
for j:=1 to LgExtrait do write(Extrait[j], ' ');
writeln;
EstSousSeq(LgSequence,LgExtrait,Sequence,Extrait);
writeln;
readln;
end.
Merci à la personne qui aura le courage d'y jeter un oeil
