필자가 작성중인 C++ 프로그램에 대한 주행 거리 초과 계산 기능을 만들려고합니다. 이 함수가 switch 문 내에서 제대로 작동하도록하는 데 문제가 있습니다. 달성 (또는 계산)하려고하는 것은 carSize 마일리지 한도 * 일 동안의 마일리지입니다. 각 carSize에는 아래에 제공된 다른 초과/마일 계산 속도가 있습니다.렌터카 주행 거리 초과 계산 기능
내 코드는 지금까지 있습니다 :
double calcMilesFee(int miles, int days, char carSize)
{
double milesFee = 0;
double compactOverageCharge = .05;
double midSizeOverageCharge = .07;
double fullSizeOverageCharge = .09;
int compactDailyMilesLimit = 20;
int midSizeDailyMilesLimit = 25;
int fullSizeDailyMilesLimit = 30;
switch (carSize)
{
case 'c':
case 'C':
{
while (miles > compactDailyMilesLimit * days)
{
milesFee = (miles * days)/compactDailyMilesLimit;
}
if (milesFee > compactDailyMilesLimit)
{
milesFee = milesFee * compactOverageCharge;
cout << "Overage Fee is " << milesFee << endl;
break;
}
}
case 'm':
case 'M':
{
while (miles > midSizeDailyMilesLimit * days)
{
milesFee = (miles * days)/midSizeDailyMilesLimit;
}
if (milesFee > midSizeDailyMilesLimit)
{
milesFee = milesFee * midSizeOverageCharge;
cout << "Overage Fee is " << milesFee << endl;
break;
}
}
case 'f':
case 'F':
{
while (miles > fullSizeDailyMilesLimit * days)
{
milesFee = (miles * days)/fullSizeDailyMilesLimit;
}
if (milesFee > fullSizeDailyMilesLimit)
{
milesFee = milesFee * fullSizeOverageCharge;
cout << "Overage Fee is " << milesFee << endl;
break;
}
}
}
return milesFee;
}
제대로 작동하지 않습니다. – Bucket
귀하의 의도가 다음 크기의 차량으로 넘어 가기를 원하지 않는 경우, 귀하가 필요로하는 케이스 - 레벨 단락 진술서를 제출하십시오. 그리고 정수 수학을 수천 (즉, int는 페니의 10 분의 1을 나타냅니다)의 정밀도로 사용하고 마지막에 최종 값 해결을 제안 할 것입니다. 통화 수학을하기 위해 부동 소수점이 잘못되었습니다. – WhozCraig
또한 while 루프가 종료되지 않는 것처럼 보입니다. –