2012-09-15 4 views
1

- 아래 코드에서 봐 주시기 바랍니다 C++

#include <QtCore/QCoreApplication> 
#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    using namespace std; 

    double purchaseAmount; 
    double paidAmount; 
    float balance; 

    int change, quarters, dimes, nickels, pennies, tenDollar, fiveDollar; // declare variables 

    cout << "Enter Total purchased amount" << endl; 
    cin >> purchaseAmount; 

    cout << "Enter Total paid amount" << endl; 
    cin >> paidAmount; 

    balance = paidAmount - purchaseAmount ; 

    tenDollar = balance/10; // calculate the number of Ten Dollars 
    change = tenDollar % 10 ; // calculate the change needed 
    change = balance * 100; 
    quarters = change/25; // calculate the number of quarters 
    change = change % 25; // calculate remaining change needed 
    dimes = change/10; // calculate the number of dimes 
    change = change % 10; // calculate remaining change needed 
    nickels = change/5; // calculate the number of nickels 
    pennies = change % 5; // calculate pennies 

    cout << "\nQuarters: " << quarters << endl; // display # of quarters 
    cout << " Dimes: " << dimes << endl; // display # of dimes 
    cout << " Nickels: " << nickels << endl; // display # of nickels 
    cout <<" Pennies: " << pennies << endl; // display # of pennies 
    cout <<" Ten dollar: " << tenDollar << endl; // display # of Ten dollar 
    //cout <<" Five dollar: " << fiveDollar << endl; // display # of Ten dollar 

    return (0); 

} 

내가 여기서 뭘 노력하고, 10 달러, 분기, 10 센트, ​​센트에 남아 변화를 계산 그리고 페니. 그리고 예를 들어 내가이 방법으로 프로그램을 실행할 때 -

Enter Total purchased amount 
9.75 
Enter Total paid amount 
20 

Quarters: 4 
Dimes: 0 
Nickels: 0 
Pennies: 0 
Ten dollar: 1 

어떤 문제가 있습니다. 즉, 위의 결과는 잘못되었습니다. 오히려 그것은이어야한다

Enter Total purchased amount 
9.75 
Enter Total paid amount 
20 

Quarters: 1 
Dimes: 0 
Nickels: 0 
Pennies: 0 
Ten dollar: 1 

내가 무엇을 잘못하고 있냐? 코드의 많은 부분을 변경하지 않고

감사

+0

여기서 내가 뭘 잘못하고 있니? - 다른 누군가가 당신의 숙제를하기를 기대합니다. 내 생각 엔 ... – dtech

+0

아니, 아니야 .. 혼자서 시작해서 도움을 청 했어. – user15169

+0

우리는 아래의 코드를 잃어버린 것 같습니다 ... –

답변

0

, 당신은 더 많은 솔루션으로 생각 넣어

그러나
change = ((balance) - floor(balance)) * 100; 

change = balance * 100; 

를 교체하여 원하는 답변을 얻을, 그리고 수 간단한 해결 방법보다 많은 포인트를 얻을 수 있습니다. 또한 휴식 규칙을 감히하지 마십시오. 을 사용하여 이름 공간 표준을 주 외부로 사용하십시오. 이처럼

:

#include <iostream> 
using namespace std; // Place it here! Not inside main. 

int main() 
{ 
return 0; 
} 

참고 : 내가 원하는 대답했다.

+0

언제 파일 범위에서'네임 스페이스 std;'를 사용했는지는 좋은 생각이었습니다. –

+1

이후 영원히. 파일 범위가 아닙니다. 그 * 어느 * 파일 범위. 악의 굴뚝은 그것을 공유 * 헤더 파일에 넣고 있습니다. 당신이 넘겨주는 소스 파일은 괜찮습니다 (개인적으로 전혀 사용하지 않지만, 만약에한다면, c/cpp가 장소입니다; 절대적으로 * 절대로 * 헤더 파일이 아닙니다). – WhozCraig

1

반복적으로 말했듯이 실수는 고통스럽게 반복되는 코드에서 발생했습니다. 다음을 고려하십시오.

int currencyCount(int& pennies, int penniesInDenomination) { 
    const int count = penniesInBase/penniesInDenomination; 
    pennies = pennies % penniesInDenomination; 

    return count; 
} 

이것은 모든 교단에 대해 반복적으로 또는 한 줄로 사용할 수 있습니다. 이것은 함수가 두 개의 값을 얻게함으로써 작동합니다 : 새 균형과 해당 종파의 카운트. 이 기준은 균형을 기준으로 삼아 사기를 치고 명백하게 독립 기능을 부르는 "부작용"으로서 반환되는 교단 수에 따라 균형을 감소시킵니다. 분명히, 당신은 이것을 문서화하기를 원할 것입니다. 이 방식으로

typedef std::pair<std::string, int> Currency; 
typedef std::vector<Currency> Currencies; 
typedef Currencies::const_iterator CIter; 

... 

for(CIter iter = currencies.begin(); iter != currencies.end(); ++iter) { 
    const int quantity = currencyCount(balance, iter->second); 
    std::cout << iter->first << ": " << quantity << std::endl; 
} 

:

... 
const int numberOfQuarters = currencyCount(balance, 25); 
const int numberOfDimes = currencyCount(balance, 10); 
... 

당신은 또한 같은 일을 수행 위에 벡터 및 루프 (예 : 이름이 나타내는 동전의 개수로) 통화 정보를 넣을 수 있습니다 당신은 반복되는 코드와 그것이 포함하는 실수를 피합니다.