#include typedef struct { /* im Feld saeure_nr wird festgehalten in welcher Reihenfolge die * Aminosaeuren aufgefuehrt sind. */ int saeure_nr[(int) 'Z']; double score[20][20]; } scorematrix; void lies_datei(char datei_name[], scorematrix * P) { /* P ist ein Zeiger auf eine scorematrix, datei_name ein string, * der den Namen der Datei angibt, aus der die Score-Matrix gelesen wird */ int i,j; FILE * datei=fopen(datei_name,"r"); for (i=0; i<20; ++i) { char a=' '; while(a==' ') fscanf(datei,"%c",&a); P->saeure_nr[(int) a]=i; } for (i=0; i<20; ++i) { for (j=0; j<20; ++j) { double s; fscanf(datei,"%lf",&s); P->score[i][j]=s; } } fclose(datei); } double score(scorematrix M,char a, char b) { /* Gibt aus der Scorematrix M den Score einer Paarung von a mit b aus */ return M.score[M.saeure_nr[(int) a]][M.saeure_nr[(int) b]]; } int main() { scorematrix M; lies_datei("blosum62",&M); printf("Der Score von R mit C ist %f und der von G mit H ist %f\n", score(M,'R','C'),score(M,'G','H')); return 0; }