Salut tout le monde ;
voilà cet exercice très intéressant :
Voilà ce que j'ai pu faire :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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
J'ai besoin de votre aide.
Partager