我正在尝试生成代码,用于检查char包含多少“A”,“C”,“G”和“T”字符。但是我有点不确定如何去做这个...因为据我所知,没有像.contains()这样的运算符可以检查。
所需的输出类似于:
"The char contains (variable amount) of letter A's"
在我的代码中,我现在有这个:
DNAnt countDNAnt(char strand)
{
DNAnt DNA;
if (isupper(strand) == "A")
{
DNA.adenine++;
}
else if (isupper(strand) == "C")
{
DNA.cytosine++;
}
else if (isupper(strand) == "G")
{
DNA.guanine++;
}
else if (isupper(strand) == "T")
{
DNA.thymine++;
}
}
DNAnt是一种具有我正在检查的所需变量的结构(A,C,G和T)。每当我在char中找到它时,我都会尝试基本上添加每个数量。
感谢您的帮助!
答案 0 :(得分:1)
发布的代码存在很多问题,其中最大的问题是新的DNAnt
,每次都会创建并返回。这将使计数方式变得更加复杂,因为现在你需要计算DNAnts
。而不是修复此代码,这是一个非常简单和愚蠢的不同方式:
std::map<char,int> DNACount;
创建一个将字符绑定到数字的对象。
DNACount[toupper(strand)]++;
如果还没有,则会为字符strand
创建一个字符/数字配对,并将该数字设置为零。然后,与strand
配对的数字会增加一个。
所以你要做的就是阅读像
这样的序列std::map<char,int> DNACount;
for (char nucleotide:strand)// where strand is a string of nucleotide characters
{
DNACount[toupper(nucleotide)]++;
}
std::cout << "A count = " << DNACount['A'] << '\n';
std::cout << "C count = " << DNACount['C'] << '\n';
....