저는 1 달러짜리 지폐를 받고 쿼터, 센트, 센트로 거스름돈을주는 간단한 자판기를위한 C ++로 된 학교 프로젝트를 가지고 있습니다. 모든 항목은 1 달러 미만입니다. 하지만 기계에서 사용 가능한 변경 사항을 추적 할 수있는 추가 기능을 추가해야하는데 어떻게해야하는지 모르겠습니다. 그리고 이것은 내가 작성한 코드입니다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
//set the variables
int Qav=5 ;
int Dav=5 ;
int Nav=5 ;
int purchaseAmount ;
cout << "Simple Vending Program for Adam Ashouri (Regular Version)" <<endl;
cout <<endl;
cout <<endl;
cout << "Enter a purchase amount [5 - 100] -->";
cin >> purchaseAmount;
int chaneBack = 100 - purchaseAmount ;
changecalculator ();
}
void changecalculator ()
{
int purchaseAmount ;
int QBack ,DBack ,NBack ;
int chaneBack = 100 - purchaseAmount ;
if (purchaseAmount %5 == 0)
{
cout << "You entered a purchase amount of " << purchaseAmount << " cents." <<endl;
cout <<endl;
QBack = chaneBack / 25 ;
DBack = (chaneBack % 25) / 10;
NBack = (chaneBack %25 %10) / 5;
cout <<"Your change of " <<chaneBack <<" cents is given as " <<QBack <<" Q, " <<DBack <<" D,and " <<NBack <<" N." <<endl;
int coinsNum = QBack + DBack + NBack;
cout << "The value of your " <<coinsNum <<" coins adds up to " <<chaneBack <<" cents." <<endl;
cout << "Thank you for using my program.";
}
else
{
cout << "Unable to process an invalid purchase amout of " <<purchaseAmount <<" cents." <<endl;
cout << "Thank you for using my program." <<endl;
}
}
우선, 현재 프로그램이 작동하지 않습니다. 왜냐하면 purchaseAmount
function 내부 로 전송하지 않기 때문 changecalculator()
입니다. 다음과 같이해야합니다.
1) 함수의 서명을 다음과 같이 변경하십시오. void changecalculator(int iPurchaseAmount)
2) purchaseAmount
함수 내에서 전송 (즉, 다음과 같이 호출 changecalculator(purchaseAmount);
)
3) iPurchaseAmount
함수 본문 내부의 값을 사용 하고 줄 int purchaseAmount;
을 제거 하십시오.
그리고 주요 질문 (사용 가능한 코인 수 절약)에 대해 :
좋습니다 . 프로그램 본문에 Qav
, Dav
및 Nav
(사용 가능한 동전)을 추가했습니다 . 맞습니다. 이제 changecalculator()
함수 내에서 이러한 값을 전송해야 합니다. 함수의 다음 서명을 사용해보십시오 void changecalculator(int iPurchaseAmount, int& ioQav, int& ioDav, int& ioNav)
(이 값은 함수 본문 내에서 사용할 수 있습니다). 이 함수를 다음과 같이 호출하십시오 changecalculator(purchaseAmount, Qav, Dav, Nav);
..
그 후에는 이러한 값을 분석하고 함수 내에서 변경하기 만하면됩니다. 값 변경을 추가해 보겠습니다 (이 함수를 많이 호출하는 경우 필요함). QBack
, DBack
및 계산 후 다음 줄을 추가하십시오 NBack
.
ioQav -= QBack;
ioDav -= DBack;
ioNav -= NBack;
그리고이 작업의 가장 복잡한 부분은 값의 분석이다 ioQav
, ioDav
, ioNav
계산하기 전에 QBack
, DBack
와 NBack
. 분기별로 해보겠습니다.
QBack = std::min(chaneBack / 25, ioQav);
사용 가능한 분기 수와 최적 분기 수의 두 가지 중 가장 작은 값을 계산합니다. 따라서이 선은 정확히 필요한 것을 계산합니다. 그 후에 다임 수를 계산할 수 있습니다.
chaneBack -= QBack * 25; // subtract quarters
DBack = std::min(chaneBack / 10, ioDav);
이 논리를 이해하면 NBack
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다