Je suis de retour,

J'ai fais un programme qui permet de calculer des distance entre des protéines (avec l'aide de pas mal de monde sur ce forum). Maintenant on me demande que l'on puisse obtenir au choix les 100 meilleurs (ou 50 ...) où bien pour une distance inférieur à X Angström, que l'opérateur doit pouvoir choisir. Quelqu'un à une idée ? Jusque là j'ai un tableau statique de 100 résidus (protéines en language vulgaire ) Que j'ai déclaré avec la variable MAX_PAIRES

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
34
35
36
37
38
 
void construire_paires()
{
  int k;
  residue_t *r1, *r2;
  float dist;
 
  //cette boucle sert a initialiser le tableau res_pair en lui indiquant des fausses paires avec des distances tres grandes
  for (k = 0; k < MAX_PAIRS; k++) {
    res_pair[k].r1 = NULL;
    res_pair[k].r2 = NULL;
    res_pair[k].dist = 1e10;
  }
  for (r1 = residue_list; r1 != NULL; r1 = r1->suiv) {
    for (r2 = residue_list; r2 != NULL; r2 = r2->suiv) {
      //premier residu dans la chaine A, deuxieme dans la chaine B
      if (r1->chain_id != 'A' || r2->chain_id != 'B')   
	continue;
      dist = sqrt((r1->x - r2->x)*(r1->x - r2->x)+(r1->y - r2->y)*(r1->y - r2->y)+(r1->z - r2->z)*(r1->z - r2->z)); 
 
      //meilleure que celles qui ont deja ete inserees ?
      if (dist > res_pair[MAX_PAIRS-1].dist)
	continue;
 
      //alors inserer lq nouvelle paire
      for (k = MAX_PAIRS-1 ; k > 0 ; k--) { 
	if (res_pair[k-1].dist < dist)
	  break;
	res_pair[k].r1 = res_pair[k-1].r1;
	res_pair[k].r2 = res_pair[k-1].r2;
	res_pair[k].dist = res_pair[k-1].dist;
      }
      res_pair[k].r1 = r1;
      res_pair[k].r2 = r2;
      res_pair[k].dist = dist;	  
    }
  }
}
Je pensais l'insérer dans cette partie du code mais je trouve que mon code est déjà trop long.
Alors je code sous Unix mais c'est pour servir sur Windows. et avec le moins possible d'intervention du genre "Que selectionnez vous ?", pour des questions de sécurité.

P.S.
Pour ceux qui m'ont aidés sur les pointeurs, je pense que je me suis améliorée non