2015-05-31 108 views
-3

我是C++的新手。最近,我正在瀏覽谷歌開發者的教程:https://developers.google.com/edu/c++/getting-started使用C++的蠻力搜索程序

這是一個簡單的匹配難題與蠻力搜索解決方案: 馬成本10美元,豬成本3美元,兔子只有0.50美元。農民以100美元購買100只動物,他購買了多少隻動物?

這裏是我的代碼:

#include <iostream> 
using namespace std; 

int main() { 
    int pHorse = 10; 
    int pPig = 3; 
    int pRabbit = 0.5; 
    for (int i = 0; i <= 100/pHorse; ++i) { 
     for (int j = 0; j <= ((100 - i * pHorse)/pPig); ++j) { 
      int money = (100 - pHorse * i - pPig * j); 
      if (pRabbit * (100 - i - j) == money) { 
       cout << "The number of Horses are: " << i << endl; 
       cout << "The number of Pigs are: " << j << endl; 
       cout << "The number of Rabbits are: " << 100 - i - j << endl; 
      } 
     } 
    } 
    return 0; 
} 

但是,它給我很荒謬的答案,例如[10 0 90],這是不正確的明顯。我想不出哪裏是問題。任何想法?提前致謝。

+4

當你新的東西,確保在*每一步*你的假設與現實相符。例如,您是否驗證了「pRabbit」的值? –

+0

您正在使用不能包含分數的*整數*。考慮使用*美分*而不是*美元*。如果您使用*浮動*由於真實的近似值,您的比較將變得更加困難。 – Galik

+0

我懂了。感謝您的有益建議。我很愚蠢,當然pRabbit會隱式轉換爲0。我現在看到了這些觀點 – user1200647

回答

0

int不會保持0.5。嘗試使用float。

2

代替

int pRabbit = 0.5; 

嘗試

double pRabbit = 0.5; 
0

0.5不是一個整數。它是一個浮點數,所以你不能在一個整數變量中存儲0.5。您可以使用doublefloat變量。

像這樣:

double pRabbit = 0.5;

float pRabbit = 0.5;