L'objectif de ce projet est de définir et manipuler des structures de données en C pour représenter des séquences d'ADN et des arbres phylogénétiques.
dna.h)nucleo
nucleo pouvant prendre les valeurs A, T, G ou C. (Attention, il est demandé de définir ces quatre valeurs, et non de travailler avec un simple char).
dna_t
dna_t contenant :
code vers un nucleo (correspondant à un tableau de nucleo).size (correspondant à la taille de ce tableau).tree_t (Arbres Phylogénétiques)
dna_t (une feuille), soit deux pointeurs vers d'autres arbres (un nœud).
tree_t contenant :
isaleaf (indiquant si on est une feuille ou non).content (une union) qui peut contenir, au choix :
tree_t.dna_t.dna.c)Vous devez implémenter les fonctions suivantes (dont les prototypes sont dans dna.h).
dna_t* createdna(int size)
size strictement positif, alloue l'espace pour un dna_t de cette taille, y compris l'espace pour le tableau code.
NULL.
void freedna(dna_t* d)
createdna.
d est non nul mais d->code est nul).
tree_t* makeNode(tree_t* t1, tree_t* t2)
t1 et t2.
t1 ou t2 est NULL), la mémoire potentiellement allouée doit être libérée et la fonction doit renvoyer NULL.
tree_t* makeLeaf(dna_t* d)
dna_t d.
d est NULL), la mémoire potentiellement allouée doit être libérée et la fonction doit renvoyer NULL.
void freetree(tree_t* t)
t.
freedna lorsque c'est nécessaire.
int distdna (dna_t* d1, dna_t* d2)
dna_t.
ATAGCAG et ATCGC ont une distance de 3 (un pour A vs C au 3ème index, et deux pour les deux derniers nucléotides manquants).dna_t* readdna (FILE* f)
f.
ATTATCG), sans séparation.dna_t correspondant et le remplir avec les données lues.
NULL.
main)Écrivez une fonction main qui respecte les consignes suivantes :
argv[1]).readdna).tree_t) (de la forme que vous voulez) avec ces codes."TATGCTTG".stderr).