2014-02-19 2 views
0

나는 following programming problem 해결하고있다 :은행 노트 프로그램

URI 온라인 판사를 | 1018 - 지폐

이 문제에서 정수 값을 읽고 값이 분해 될 수있는 최소 메모 수를 계산해야합니다. 노트는 100, 50, 20, 10, 5, 2 e입니다. 1. 읽은 값과 노트 목록을 인쇄하십시오.

입력

입력 파일은 정수 N (0 < < N 1000000)을 포함한다.

출력

인쇄 주어진 예와 같은 필요한 지폐의 최소량.

#include <cmath> 
#include <iomanip> 
#include <iostream> 

using namespace std; 

bool NTrue(int n); 
void HowMany(int x, int BankNote); 

int main(int argc, char ** argv) { 
    int N; 
    cin >> N; 
    int BankNote = 100; 
    if (NTrue(N)) { 
     while (BankNote != 0) { 
      if (BankNote == 25) 
       BankNote = 20; 
      HowMany(N, BankNote); 
      N = N % BankNote; 
      BankNote = BankNote/2; 
     } 
    } 
    return 0; 
} 

bool NTrue(int n) { 
    if (0 < n && n <= pow(10, 6)) 
     return true; 
    else 
     return false; 
} 

void HowMany(int x, int BankNote) { 
    int result = x/BankNote; 
    float BN = BankNote; 
    cout << result << " nota(s) de R$ " << fixed << setprecision(2) << BN << endl; 
} 

내가 원하는 결과를받지 못했습니다 :

나는 다음과 같은 솔루션을 시도했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

현재 질문은 이해할 수 없습니다. 다시 포맷하십시오. –

+2

여기에서 질문을 구분하는 것은 매우 어렵습니다. –

+1

코드를 다시 붙여 넣는 것이 좋습니다. http://stackoverflow.com/editing-help를 확인하십시오. [ask] 가이드도 유용합니다. – brasofilo

답변

1

출력이 1 대신 1,00으로 작성되는 독특한 형식이어야한다는 것을 알았습니다. 여기서 쉼표 문자는 10 진수 부동 소수점 구분 기호로 간주됩니다.

온라인 판사가 귀하의 프로그램을 실행하면, 대신 1.00이 발생합니다. 분수에 사용되는 문자는 로캘에 따라 다릅니다. 온라인 판사가 다른 로케일을 사용하고있을 수 있으므로 분리 문자로 점 문자 (.)를 사용합니다.

명시 적으로 .00 부분을 인쇄 해보십시오 :

물론
void HowMany(int x, int BankNote) { 
    int result = x/BankNote; 
    cout << result << " nota(s) de R$ " << result << ",00" << endl; 
} 

, 이것은 단지 추측이다.

+0

아마도이 문제에 대한 가장 합리적인 설명 일 것입니다. –

+0

나중에 그게 내 첫 대답이었고 그 후에 변경 했어. 나는 곧 사이트 작업으로 다시 시도 할 것이다 ... ur 도움을 청탁 : D –

+0

나는 똑같이 시도했다. ( 아침에 우리 상사에게 물어 보겠습니다. –

0

이와 비슷한?

#include <algorithm> 
#include <iostream> 
#include <vector> 
#include <cstdlib> 

int main(int nargc, char* argv[]) { 
    int n = atoi(argv[1]); 

    int arr[] = {100,50,20,10,5,2,1}; 
    std::vector<int> notes (arr, arr + sizeof(arr)/sizeof(arr[0])); 

    std::cout << n << std::endl; 
    for(int i = 0; i < notes.size(); i++) { 
    int b = n/notes[i]; 
    if (b > 0) { std::cout << b << " " << notes[i] << " bills " << std::endl; } 
    n = n%notes[i]; 
    } 

    return 0; 
}