#include int numdna[1000000], thestring[1000]; char finalstring[1000]; int translation() { char dna[1000000], filename[100]; FILE *fp; int i=0; printf("Enter the location of dna\n"); scanf("%s", filename); fp=fopen(filename, "r"); if (fp == NULL) {printf("Can't open file\n"); exit(1);} fscanf(fp, "%s", dna); while ((dna[i]) =='g' || (dna[i]) =='a' || (dna[i]) =='c' || (dna[i]) =='t') { if((dna[i])=='a') { numdna[i]=1;} else if((dna[i])=='c') { numdna[i]=2;} else if((dna[i])=='g') { numdna[i]=3;} else { numdna[i]=4;} i++; } return i; } void decode() { int i=0; while (thestring[i]>0 && thestring[i]<5) { if(thestring[i]==1) { finalstring[i]='a';} else if(thestring[i]==2) { finalstring[i]='c';} else if(thestring[i]==3) { finalstring[i]='g';} else { finalstring[i]='t';} i++; } } int main() { int length, substringlength, substring[1000], i, j, k, count, true, match, high=0; printf("Enter the length of substring\n"); scanf("%d", &substringlength); length=translation(); printf("the number is %d - %d = %d\n",length, substringlength, length-substringlength); for (count=0; count < length-substringlength; count++) { printf("in the first loop for the %ds time\n",count); for (i=count; i < count+substringlength; i++) { substring[i-count]=numdna[i]; } match=0; for (j=count+1; j <= length-substringlength; j++) { k=j; true=0; while (k < j+substringlength) { if (numdna[k] == substring[k-j]) {true++;} k++; } if (true == substringlength) {match++;} } if (match > high) { high=match; for(k=0; k < substringlength; k++) { thestring[k]=substring[k]; } } } decode(); printf("the substring that appeared the most is %s, it appeared %d times\n",finalstring, high+1); }