2014-02-19 72 views
0

我解決一個following programming problem銀行票據計劃

URI在線評測| 1018 - Banknotes

在這個問題中,您必須讀取一個整數並計算出可能分解值的最小可能數量的註釋。筆記爲100,50,20,10,5,2 e 1.打印讀取的值和筆記列表。

輸入

輸入文件包含的整數N(0 <Ñ< 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,指南[問]也是有用的。 – brasofilo

回答

1

我看到輸出必須有一個奇特的格式,編寫1,00而不是1。這裏的逗號字符應該是一個十進制的浮點分隔符。

我想,當網上法官運行你的程序,它取而代之的是1.00。用於分數的字符取決於語言環境;在線裁判可能會使用不同的區域設置,因此它使用點字符(.)作爲分隔符。

儘量明確地打印.00部分:

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

當然,這只是一個猜測。

+0

可能是這個問題最合理的解釋。 –

+0

雅是這是它,即使我相信這是我的第一個答案,我改變它後 我會盡快嘗試它的網站工作... thnx爲你的幫助: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; 
}