早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c程作业《人类基因函数》输入任意两个由ATCG组成的基因(如ATT和CAA),按下图的对应法则算出两个基因的相似度(如ATT和CAA就是(-1)+(-1)+(-1)=-3)若两个基因不一样长(如ATTG和CAA)

题目详情
c程作业《人类基因函数》
输入任意两个由ATCG组成的基因(如ATT和CAA),按下图的对应法则算出两个基因的相似度(如ATT和CAA 就是(-1)+ (-1) +(-1)=-3 )
若两个基因不一样长(如ATTG和CAA),则用“-”将空缺位补齐.由于补齐空缺位有多种方法(如可将CAA补成- CAA 、 C-AA 、CA-A、 CAA- ),当计算不等长基因相似度时,选取相似度最大的一种情况作为两个基因的相似度.
作业要求是:操作时输入第一个基因,按回车,输入第二个基因,按回车,输出相似度.
A T C G -
A 5 -1 -2 -1 -3
T -1 5 -3 -2 -4
C -2 -3 5 -2 -2
G -1 -2 -2 5 -1
- -3 -4 -2 -1 0
抱歉图片发不上来,这是对应得分表
最好有每一步的分析,
▼优质解答
答案和解析
例子里面的ATT和CAA的相似度怎么是 -1 + -1 + -1 呢?
是ATT和TAA吧!
#include
#include
#define MAX 20
#define ENTRY_COUNT 14
#define INVALID -1000
typedef struct{
char A;
char B;
int Pro;
}PROXIMITY_ENTRY;
// entry sort from small to big
// '-', 'A', 'C', 'G', 'T'
PROXIMITY_ENTRY prox_tbl[ENTRY_COUNT] = {
{'-', 'A', -3},
{'-', 'C', -2},
{'-', 'G', -1},
{'-', 'T', -4},
{'A', 'A', 5},
{'A', 'C', -2},
{'A', 'G', -1},
{'A', 'T', -1},
{'C', 'C', 5},
{'C', 'G', -2},
{'C', 'T', -3},
{'G', 'G', 5},
{'G', 'T', -2},
{'T', 'T', 5}
};
// Insert a char to a string with index
void insert(char *str, int index)
{
char *p = str;
int i = strlen(str);
while(i >= index)
{
*(p+i+1) = *(p+i);
i--;
}
*(p+index) = '-';
}
// Proximity of two Gene ceil
int proximity(char a, char b)
{
int i;
if(a > b)
{
return proximity(b, a);
}
for(i=0; i
看了 c程作业《人类基因函数》输入...的网友还看了以下: