【发布时间】:2020-04-16 11:08:29
【问题描述】:
我目前正在编写一个程序,其主要功能是读取文件并执行计算。目前我正在研究一个函数,该函数的功能是根据多个文本文件中的变量处理一组计算。以下是此功能所需的两个文本文件
Customers.txt
Carly:Cat:ABCCCCE.
Dodgy Dan:Dog:BCACECC.
Ernie:Ettin:AABCCDD.
Sally:Snake:AEEEEEE.
零件.txt
A:Head:1:2:15.
B:Torso:0:6:5.
C:Leg:0:4:6.
D:Arm:0:4:8.
E:Tail:0:6:2.
robotComplexity() 的主要功能也是接受两个向量,一个用于零件,一个用于客户,并比较每个变量(partCode 和 listofParts)。如果可以在字符串 listofParts 中找到 char partCode,则将其添加到 counter++。其原因是由于在零件中发现的可变复杂性。如果零件代码等于 A(partCode),则复杂度为 15,如果等于 B,则复杂度为 5。listofParts 包含这些字符的随机分类,一旦计算出所有复杂度的总和,则该函数可以使用附加到此字符以执行计算的 int 值。我与我的尝试的问题是,当它运行时的一些65656565656565656565656565656565656565656566666666666666666666666666666666667676767676767676767676767676767676767676767676786868686868686868686868686868686868686969696969696969696969696969696在控制台作为总被返回。实际的预期输出如下所示。功能问题可以在提供的代码末尾附近找到。
主要代码
int main()
{
auto parts = readpartFile();
auto newVec = readcustomerFile();
robotComplexity(parts,newVec);
getch();
return 0;
}
std::stringstream partsList(
R"(A:Head:1:2:15.
B:Torso:0:6:5.
C:Leg:0:4:6.
D:Arm:0:4:8.
E:Tail:0:6:2.)");
std::stringstream customerList(
R"(A:Head:1:2:15.
B:Torso:0:6:5.
C:Leg:0:4:6.
D:Arm:0:4:8.
E:Tail:0:6:2.)");
double robotComplexity(std::vector<Part> const& parts,std::vector<Customer> const& customers)
{
double Robotcomplexity;
vector<Part> part = parts;
vector<Customer> customer = customers;
int total = 0;
for(Part par: parts) {
for (Customer cus :customers)
{
for (int i = 0; i < cus.listofParts.size(); i++) {
if(cus.listofParts.find(par.partCode) != string::npos) {
total =+ par.partCode;
cout << cus.customerName << " robot contains parts. " << cus.listofParts << "The sum of complexities equals " << total;
}
}
}
}
return Robotcomplexity;
}
这个函数的一个示例输出是
"Dodgy Dans robot contains parts BCACECC. The sum of complexities equals 46"
46 来自 ABCDE 中的复杂性。 B 的复杂度为 5,C 的复杂度为 6,A 的复杂度为 15,E 的复杂度为 2。这些值是根据它们达到数字 46 的次数来求和的。
我的问题是如何检查变量 listofParts 是否包含 partCode(ABCDE) 的字符,如果包含,请计算它们。在此之后,partCode 的每个实例对应的复杂度值可用于上述计算。
如果需要任何进一步的解释,请随时询问。任何帮助表示赞赏。
【问题讨论】:
-
不清楚你的问题是什么
-
请阅读最后一段。
-
您想检查一个字符串是否包含来自第二个字符串的字符并计算它们吗?如果是这样的话,这些字符串是否在向量内并不重要。
-
问题中似乎有很多不相关的东西。我无法真正区分它,但是例如从文件中读取似乎不是问题,因此您可以将其删除。请阅读minimal reproducible example。将大的东西分成小块是降低复杂性的一项重要技能
-
在我看来,这堵文字可以归结为“如何计算字符串中给定字符的出现次数”,即
std::count(thestring.begin(), thestring.end(), thecharacter)。
标签: c++ list file vector counter