2013-07-17 41 views
-5

這裏是鏈接到北大法官的問題編號1003:http://poj.org/problem?id=1003北大法官ID 1003的這個解決方案有什麼問題?

所有我們需要爲這個問題做的是計算調和級數的總和,它與我們已經輸入

變量比較

我正在爲示例輸入案例找到正確的答案,但我不知道爲什麼我的答案沒有被接受?作爲結果,我得到'錯誤答案'。 這個問題中的一部分是「輸入包含一個或多個測試用例,後面跟着一個包含數字0.00的信號,表示輸入結束」我不知道該怎麼做0.00部分,我我只是採取單一的輸入,我不明白該怎麼做?

這是我的解決方案:

#include<iostream> 

using namespace std; 

int main() 
{ 

    float c; 
    float sum = 0; 
    cin >> c; 

    short int i = 1; 

    while(1) 
    { 
     sum += (float)1/(i+1); 

     if(sum >= c) 
     { 
      cout << i << " card(s)"; 
      break; 
     } 
     i++; 
    } 
    return 0; 
} 
+1

**調試器**是你的朋友(最好的朋友)。 – Maroun

+4

這個問題似乎與題外話,因爲它是關於校對程序功能,而不是一個特定的編程問題。 – JJJ

+0

它沒有解決問題。例如:「輸入由一個或多個測試用例組成,後面跟着一個包含數字0.00的信號,表示輸入結束。您不檢查0.00,也不保存輸入列表。 – Daniel

回答

1

輸入由一個或多個測試用例,隨後包含信號輸入的端部的數0.00的線。每個測試用例都是一個包含正浮點數c的單行,其值至少爲0.01,最大爲5.20; c將包含三位數字。

你的程序不會正確輸入。

+0

那麼解決方案是什麼?如何進行修正? – user2533630

+0

在一個循環中處理輸入,你的程序應該可以和多個測試用例一起工作 – SpongeBobFan

0
  1. 輸入由一個或多個測試用例組成。

  2. 使用示例中顯示的確切輸出格式,這意味着您應該在每種情況後都打印換行符。

我對代碼進行了一些更改以使其被接受。

#include <iostream> 

using namespace std; 

int main() { 
    float c; 
    while (true) { 
     cin >> c; 
     if (c == 0.0) 
      return 0; 
     float sum = 0; 
     short int i = 1; 
     while (1) { 
      sum += 1.0/(i + 1); 
      if (sum >= c) { 
       cout << i << " card(s)" << endl; 
       break; 
      } 
      i++; 
     } 
    } 
} 
+0

但是,你的代碼工作的原因是什麼,而我的代碼並不是這樣,我試着在我的代碼中放入一個endl,但它仍然存在 這是新的代碼I使用: > #include > > using namespace std; > > int main() > { > float c; > cin >> c; if(c == 0。00) { return 0; } float sum = 0; short int i = 1; (1) while(1) sum + =(float)1 /(i + 1); (sum> = c) if(sum> = c) cout << i <<「card(s)」<< endl; 休息; } i ++; } return 0; } – user2533630

+0

@ user2533630:兩個答案都說同樣的事情。輸入可以包含__多個測試用例___。你的代碼將接受多少測試用例? – Blastfurnace

+0

@ user2533630正如我所說:**輸入包含一個或多個測試用例。** –

相關問題