이 작은 문제를 제외하고는이 프로그램을 통해 거의 완료되었습니다.시나리오 출력이 두 번째 루프에서 잘못된 대답을 나타냅니다.
문제는 처음에 다음을 입력하여 프로그램을 반복 할 때 20.0 36.0 72.0 2.0 10.0 18.0 10.0
출력이 232.59 sec
인 것으로 나타납니다. I 루프 주위에 두 번째
25.0 72.0 200.0 1.5 8.0 30.0 20.0
내 출력은 내가 입력을 반대로하면 지금
1141.63
하고 난에 대한 두 번째 루프 입력 한해야 할 때 잘못 800.41
을 나옵니다 첫 번째 루프와 첫 번째 루프에 대한 첫 번째 루프. 첫 번째 루프에 대한 내 출력은 1141.63
이지만 두 번째 루프는 내 대답은 1141.63
입니다. 나는이 일이 어떻게 일어나고 있는지에 대해 매우 당혹 스럽다. 내 초기 솔루션 중 하나는 각 루프가 다른 함수를 사용하여 모든 변수를 다시 0으로 재설정하는 것이었지만 작동하지 않는 것 같았고 지금은 여기 있습니다.
편집 : 문제는 알아 냈습니다. 각 루프의 끝에서 시간을 재설정하고 volFilled을 0으로 설정해야했습니다.
void Well::timeReq()
{
bool exit = false;
while (!exit)
{
std::cout << "Enter 7 digits to evaluate or type 0 now to exit." << std::endl;
std::cin >> UP;
if (UP == 0)
{
exit = true;
break;
}
std::cin >> D >> L >> B >> P >> DOWN >> V;
double WL = L;
double radius = (D/2);
while (volFilled < V)
{
time += UP;
time += sqrt(2 * (L)/(acceleration * 12.0));
time += (L)/(P);
L += (B * cuIns)/(pi*pow(radius, 2));
time += DOWN;
volFilled += B;
}
std::cout << std::endl;
std::cout << "Scenario " << scenario << ":" << std::endl;
std::cout << std::left << std::setw(25) << "\tUp Hill" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< UP << " sec" << std::endl;
std::cout << std::left << std::setw(25) << "\tWell Diamter" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< D << " in" << std::endl;
std::cout << std::left << std::setw(25) << "\tWater Level" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< WL << " in" << std::endl;
std::cout << std::left << std::setw(25) << "\tBucket Volume" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< B << " cu ft" << std::endl;
std::cout << std::left << std::setw(25) << "\tBucket Ascent Rate" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< P << " in/sec" << std::endl;
std::cout << std::left << std::setw(25) << "\tDownhill" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< DOWN << " sec" << std::endl;
std::cout << std::left << std::setw(25) << "\tRequired Volume" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< V << " cu ft" << std::endl;
std::cout << std::left << std::setw(25) << "\tTIME REQUIRED" << std::left << std::setw(30) << std::fixed << std::setprecision(2)
<< time << " sec" << std::endl;
scenario++;
}
}
모든 멤버 변수를 다시 설정해야합니까? 그들의 초기 값으로? 방금 루프를 통해 각 반복 후에 모든 변수를 재설정하고 예상 결과를 얻었습니다. – Kevin
디버거를 사용하고 코드를 단계별로 실행하고 그 과정을 확인해야합니다. – SoronelHaetir
@ 케빈 다시 시도 할 것입니다. – 73memedream