Professional Documents
Culture Documents
h>
#define MAX_NUMBER_OF_LINES 257
#define MAXIMUM_LENGTH 50
FILE *input;
FILE *output;
int read_blood_type (char sequence[]);
int read_blood_type3 (char sequence[]);
int main(){
int n1, n2, n3, i;
char q, r, s, seq4[4],d, e, f, seq5[4], seq1[MAXIMUM_LENGTH],
seq2[MAXIMUM_LENGTH], seq3[MAXIMUM_LENGTH], a, b, c;
if((input = fopen("bloodtype.dat", "r")) == NULL){
printf("Error: cannot read the file bloodtype.dat\n");
return 1;
}
if((output = fopen("bloodtype.out", "w")) == NULL){
printf("Error: cannot write to file bloodtype.out\n");
return 1;
}
for(i = 0; i < MAX_NUMBER_OF_LINES ; i++){
n1 = read_blood_type(seq1);
a = seq1[n1 - 1];
n2 = read_blood_type(seq2);
// printf("length of seq2 should be %d\n", n);
b = seq2[n2 - 1];
n3 = read_blood_type3(seq3);
// printf("length of seq3 should be %d\n", n);
c = seq3[n3 - 1];
if(a != 'E'){
if(seq1[n1 - 3] != 'A'){
q = seq1[n1 - 2];
r = seq1[n1 - 1];
s = ' ';
seq4[0] = q;
seq4[1] = r;
seq4[2] = s;
// printf("%s ", seq4);
}
else {// if( seq1[n1 - 3] == 'A'){
q = seq1[n1 - 3];
r = seq1[n1 - 2];
s = seq1[n1 - 1];
seq4[0] = q;
seq4[1] = r;
seq4[2] = s;
// printf("%s ", seq4);
}
}
if(c == '?'){ //find child
if(seq2[n2 - 3] != 'A'){
d = seq2[n2 - 2];
e = seq2[n2 - 1];
f = ' ';
seq5[0] = d;
seq5[1] = e;
seq5[2] = f;
// printf("%s ", seq5);
if(seq1[n1 - 2] == 'A'){
if(seq2[n2 - 2] == 'A' || seq2[n2 - 2] == 'O'){
if(seq2[n2 - 2] == 'A' || seq2[n2 - 2] == 'O'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] ==
'-'){
fprintf(output, "%s %s {A-, O-}\n",
seq4, seq5);}
else{
fprintf(output, "%s %s {A+, A-, O+,
O-}\n", seq4, seq5);
}
}
}
}
if(seq1[n1 - 2] == 'A' && seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-, O-, AB-}\n",
seq4, seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-, O+, O-,
AB+, AB-}\n", seq4, seq5);
}
}
if(seq1[n1 - 3] != 'A' && seq1[n1 - 2] == 'B' &&
seq2[n2 - 2] == 'A'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-, O-, AB-}\n",
seq4, seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-, O+, O-,
AB+, AB-}\n", seq4, seq5);
}
}
if(seq1[n1 - 3] != 'A' && seq1[n1 - 2] == 'B' &&
seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {B-, O-}\n", seq4, seq5);}
else{
fprintf(output, "%s %s {B+, B-, O+, O-}\n",
seq4, seq5);
}
}
if(seq1[n1 - 3] != 'A' && seq1[n1 - 2] == 'B' &&
seq2[n2 - 2] == 'O'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {B-, O-}\n", seq4, seq5);}
else{
fprintf(output, "%s %s {B+, B-, O+, O-}\n",
seq4, seq5);
}
}
}
else{// if( seq2[n2 - 3] == 'A'){
d = seq2[n2 - 3];
e = seq2[n2 - 2];
f = seq2[n2 - 1];
seq5[0] = d;
seq5[1] = e;
seq5[2] = f;
// printf("%s ", seq5);
if(seq1[n1 - 2] == 'A' && seq2[n2 - 3] == 'A' &&
seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-, AB-}\n", seq4,
seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-, AB+,
AB-}\n", seq4, seq5);
}
}
if(seq1[n1 - 2] == 'B' && seq1[n1 - 3] != 'A' &&
seq2[n2 - 3] == 'A' && seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-, AB-}\n", seq4,
seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-, AB+,
AB-}\n", seq4, seq5);
}
}
if(seq1[n1 - 2] == 'O' && seq2[n2 - 3] == 'A' &&
seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-}\n", seq4, seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-}\n",
seq4, seq5);
}
}
if(seq1[n1 - 2] == 'B' && seq1[n1 - 3] == 'A' &&
seq2[n2 - 3] == 'A' && seq2[n2 - 2] == 'B'){
if(seq1[n1 - 1] == '-' && seq2[n2 - 1] == '-'){
fprintf(output, "%s %s {A-, B-, AB-}\n", seq4,
seq5);}
else{
fprintf(output, "%s %s {A+, A-,B+, B-, AB+,
AB-}\n", seq4, seq5);
}
}