Exercice de bio-informatique
Salut tout le monde ;
voilà cet exercice très intéressant :
Citation:
Une séquence adn ne contient que les caractères (a,t,c,g).
- Écrire une fonction valide qui prend une chaîne en paramètre, et renvoie true si la chaîne contient une chaîne adn et false sinon.
- Écrire une fonction cherche_base qui retourne le rang où apparaît pour la première fois la base représentée par un caractère dans la séquence adn, tous deux passés en paramètre. Si la base n'apparaît pas, la fonction devra renvoyer -1 pour indiquer une erreur.
Exemples : cherche_base('attgcc','c'); retourne 5 et cherche_base('gcctt','a'); retourne -1.
Voilà ce que j'ai pu faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
program heh;
uses crt;
var d:string; k:boolean; x:char; p:integer;
function valide(s:string):boolean;
var i:integer;
begin
valide:=true;
for i:=1 to length(s) do begin
if (s[i]<>'a') and (s[i]<>'g') and (s[i]<>'c') and (s[i]<>'t') then
valide:=false;
end;
end;
function cherche_base(s:string;l:char):integer;
var i,m,o,w,q:integer;
m:=0,o:=0;w:=0;q:=0;
for i:=1 to length(s) do begin
if s[i]='a' then m:=i;
if s[i]='c' then o:=i;
if s[i]='g' then w:=i;
if s[i]='t' then q:=i;
end;
cherche_base:=i;
end;
begin
clrscr;
writeln('donner votre chaine'); readln(d);
k:=valide(d);
writeln(k);
write('donner le char'); readln(x);
p:=cherche_base(d,x);
write(p);
readln;readln; |
Et voilà, je n'arrive pas à faire la deuxième question ; j'ai essayé mais vous voyez que c'est faux, il donne toujours la position 6.
J'ai besoin de votre aide.