Я работаю с нитями ДНК, так что входная строка будет выглядеть так: ATGC (с возможными основаниями А, Т, G, и С)Как использовать эту функцию void для вычисления процента?
Я должен использовать эту функцию: пустое updateGCCount (символ S [ ], int * gc, int * at) для вычисления процента содержимого «GC» во входной строке.
Функция, updateGCCount, просматривает содержимое входной строки s и обновляет значения «GC» и «AT» соответствующим образом.
Что я не понимаю, если эта функция ничего не возвращает, если она недействительна, то как ее использовать для вычисления процента содержимого «GC»?
Вот мой код функции updateGCCount:
void updateGCCount(char s[], int * gc, int * at){
int i;
for(i=0;i!='\0';i++){
if(s[i]=='G' || s[i]=='C'){
(*gc)++; /*Updated with the help of people who answered!*/
}
if(s[i]=='A' || s[i]=='T'){
(*at)++; /*Updated with the help of people who answered!*/
}
}
}
И вот теперь моя главная функция с вызовом вышеупомянутой функции (добавляется этот код на после некоторой помощи из приведенных ниже ответов):
int main(){
char s[400];
int gc, at;
double percentage;
scanf("%s", s);
gc = 0;
at = 0;
updateGCCount(s, &gc, &at);
percentage = (gc * 100.0)/(strlen(s) - 1);
printf("Sequence : %s\n", s);
printf("GC-content: %.2f\n", percentage);
return 0;
}
ПРОБЛЕМЫ Я ИМЕЮ! Когда я ввожу входную строку «ATCG», процент равен 0, что неверно, и я не могу понять, почему это дает мне эту проблему! Помощь очень ценится!
Спасибо!
'дс ++' и '++' приращения указателей –
Таким образом, если это увеличивает указатели, в основной функции, я должен использовать цикл for, чтобы пройти через входную строку, а затем внутри цикла for, я бы вызвал updateGCCount? – Karen