gpt4 book ai didi

c++ - 在 C++ 的 if 语句中使用数组中的特定值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:55 25 4
gpt4 key购买 nike

if(gene1A[20] == 'T' || gene2A[20] == 'T')
outFile << "Person A is of 'Anemic' type." << endl;
else if(gene1A[20] == 'T' && gene2A[20] == 'T')
outFile << "Person A if of 'Carrier' type." << endl;
else
outFile << "Person A is of 'Normal' type." << endl;

if(gene1B[20] == 'T' || gene2B[20] == 'T')
outFile << "Person B is of 'Anemic' type." << endl;
else if(gene1B[20] == 'T' && gene2B[20] == 'T')
outFile << "Person B if of 'Carrier' type." << endl;
else
outFile << "Person B is of 'Normal' type." << endl;

if(gene1C[20] == 'T' || gene2C[20] == 'T')
outFile << "Person C is of 'Anemic' type." << endl;
else if(gene1C[20] == 'T' && gene2C[20] == 'T')
outFile << "Person C if of 'Carrier' type." << endl;
else
outFile << "Person C is of 'Normal' type." << endl;

if(gene1D[20] == 'T' || gene2D[20] == 'T')
outFile << "Person D is of 'Anemic' type." << endl;
else if(gene1A[20] == 'T' && gene2A[20] == 'T')
outFile << "Person D if of 'Carrier' type." << endl;
else
outFile << "Person D is of 'Normal' type." << endl;

是我现在的代码。我需要做的是根据我设置的数组,如果此人是贫血患者、携带者或正常人,则输出“outFile”。每个数组的长度为 444 个字符,可以是 A、C、T 或 O。如果 T 位于 gene1[] 和/或 gene2[] 的第 20 个位置,则该人将患有贫血(如果只有一个数组)或载体(如果在两个阵列中)。

我现在拥有的东西使它们自动成为“正常”。我相信我的 if 语句设置不正确,但我需要的是引用数组中的第 20 个值,然后如果它 == 'T',则输出它们的“类型”。

注意:我注意到在我的代码中我输入了 20 而不是 19。我做了那个更正所以只看过去。

谢谢大家!

最佳答案

(这不是一个完整的答案,但很难表达为评论,由此产生的简化可能无论如何都会引导您找到答案...)

功能分解是你的 friend :

const char* type(const char* gene1, const char* gene2) {
return gene1[19] != 'T' ? "Normal" : gene2[19] == 'T' ? "Anemic" : "Carrier";
}

outFile << "Person A is of '" << type(gene1A, gene2A) << "' type." << endl;
outFile << "Person B is of '" << type(gene1B, gene2B) << "' type." << endl;
outFile << "Person C is of '" << type(gene1C, gene2C) << "' type." << endl;
outFile << "Person D is of '" << type(gene1D, gene2D) << "' type." << endl;

这也使得像你为 D 介绍的错误这样的错误更难介绍,但在你介绍时更容易发现。

编辑: @MarkB 指出了我的逻辑错误(我误读了原始逻辑)。不幸的是,我不确定如何修复它,因为原始逻辑的形式是:

     if A or  B then X
else if A and B then Y
else Z

因为只要 (A 和 B) 为真,(A 或 B) 就为真,第二个子句永远不会触发,这几乎可以肯定不是您的意图。如果您打算首先使用 AND 子句,则可以这样重写 type() 函数:

const char* type(const char* gene1, const char* gene2) {
bool t1 = gene1[19] == 'T';
bool t2 = gene2[19] == 'T';
return t1 && t2 ? "Anemic" : t1 || t2 ? "Carrier" : "Normal" );
}

顺便说一下,这个函数不会是当前代码的“子函数”(不管是什么意思),它只是一个声明在函数之上的自由函数。 OTOH,如果您的编译器支持 C++11 lambda,您实际上可以在相关函数的本地声明 type() 函数:

auto type = [](const char* gene1, const char* gene2) -> const char * {

};

关于c++ - 在 C++ 的 if 语句中使用数组中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com