В настоящее время я пишу программу, основной функцией которой является чтение файлов и выполнение расчетов. В настоящее время я работаю над функцией, функция которой заключается в обработке набора вычислений на основе переменных в нескольких текстовых файлах. Ниже приведены два текстовых файла, необходимые для этой функции
Customers.txt
Carly:Cat:ABCCCCE.
Dodgy Dan:Dog:BCACECC.
Ernie:Ettin:AABCCDD.
Sally:Snake:AEEEEEE.
Parts.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). Если char partCode можно найти в строке listofParts, то это добавляется в счетчик ++. Причина этого кроется в переменной сложности, найденной в деталях. Если код детали равен A (partCode), то сложность равна 15, если его значение равно B, тогда сложность равна 5. listofParts содержит случайный ассортимент этих символов, и после вычисления суммы всех сложностей функция может использовать значения int, прикрепленные к этим символам для выполнения расчетов. Моя проблема с моей попыткой состоит в том, что, когда это бежит, число 6565656565656565656565656565656565656565656666666666666666666666666666666676767676767676767676767676767676767676767676767676767676767676767676767676786868686868686868686868686868969696969696969696969696969696969696 Фактический ожидаемый результат показан ниже. Функция вопрос может быть найдена в конце предоставленного кода.
Основной код
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 могут использоваться для вычисления, показанного выше.
Если требуется какое-либо дальнейшее объяснение, не стесняйтесь спрашивать. Любая помощь приветствуется.