2015-06-21 97 views
1

讓我通過說我仍然對C++非常陌生並希望儘可能簡單。我在數學上也很糟糕。找不到C++中兩個項目之間的差異

大多數情況下,我正在查看是否有人能夠幫助我的代碼,因此它總是會給出正確的結果。除了在一種情況下,我主要是通過它來做我想做的事情。

我的代碼試圖找出有多少熱狗weiners軟件包以及某人購買了多少熱狗包。然後它會告訴用戶他們可以製作多少熱狗,以及他們會有多少剩菜或小麪包。假設一個包weiners包含12和包子的包中包含8,這就是我來了這麼遠:

#include <iostream> 
#include <cmath> 

using namespace std; 

void hotdog(int a, int b){  //a = weiner packages, b = bun packages 
    int weiners = 12 * a; 
    int buns = 8 * b; 
    int total = (weiners + buns) - (weiners - buns); 
    int leftOverWeiners = total % weiners; 
    int leftOverBuns = total % buns; 
    int totalHotDogs = total/2; 

    cout << "You can make " << totalHotDogs << " hotdogs!" << endl; 

    if (leftOverWeiners > 0){ 
     cout << "You have " << leftOverWeiners << " weiners left over though." << endl; 
    }else if (leftOverBuns > 0){ 
     cout << "You have " << leftOverBuns << " buns left over though." << endl; 
    } 
} 

int main(){ 
    int a; 
    int b; 

    cout << "Let's see how many hotdogs you can make!" << endl; 
    cout << "How many weiner packages did you purchase?: "; 
    cin >> a; 
    cout << "How many bun packages did you purchase?: "; 
    cin >> b; 

    hotdog(a, b); 

    return 0; 
} 

有了這個,我總能得到正確的答案,如果包子到weiners比例是相同的,或者如果麪包比麪包更多。

由於我設置了總數和/或leftOverBns(第9,11行)的方式,因此我將永遠無法得到有多少剩餘小包的正確答案。我知道,如果不是修改我當前的代碼的方法,我必須有一個更簡單的方法來做到這一點,但我很難過。

我知道我留下了幾乎零符號,所以如果你想要一些請讓我知道!

+2

不是int'total =(weiners + buns) - (weiners - buns);'與'int total = 2 * buns'一樣?你在那做什麼? –

+0

@ShripathiKamath 我一直在弄亂那段代碼一段時間,我猜。本來這只是: 'INT總和= weiners +包子;' 所以,是的,它是等價的: 'INT總= 2 *包子;' – Robble

+1

在我看來,是什麼在這裏失蹤的事實你受到兩項物品中較小的一項的限制。即類似'int number_of_hotdogs_i_can_make = std :: min(weiners,buns)'。 –

回答

0
#include <iostream> 

void hotdog(int weinerspackages, int bunspackages){ 
    const int weinersPerPackage = 12; 
    const int bunsPerPackage = 8; 
    const int totalweiners = weinerspackages * weinersPerPackage; 
    const int totalbuns = bunspackages * bunsPerPackage; 
    int leftoverweiners = 0; 
    int leftoverbuns = 0; 
    int amountOfHotdogs = 0; 

    if(totalweiners > totalbuns){ 
     leftoverweiners = totalweiners - totalbuns; 
     amountOfHotdogs = totalbuns; 
     leftoverbuns = 0; 
    } 
    else if(totalbuns > totalweiners){ 
     leftoverbuns = totalbuns - totalweiners; 
     amountOfHotdogs = totalweiners; 
     leftoverweiners = 0; 
    } 
    else{ 
     amountOfHotdogs = totalweiners; 
     leftoverweiners = 0; 
     leftoverbuns = 0; 
    } 

    std::cout << "You can make: " << amountOfHotdogs << " Hotdogs" << std::endl; 
    std::cout << "Leftover Weiners: " << leftoverweiners << " || Leftover Buns: " << leftoverbuns << std::endl; 
} 

int main(){ 
    int PackagesW = 8; 
    int PackagesB = 12; 

    hotdog(PackagesW, PackagesB); 

    system("pause"); 
    return 0; 
} 

注:可以用更少的變量,要做到這一點,我聲明的變量,這個量,使之更容易瞭解的數字表示。

假設它只需要其中一個製作熱狗,您可以找到哪些配料是最少的,而且您可以製作的熱狗數量將受該配料數量的限制,這就是爲什麼amountOfHotdogs取小一的值。如果兩者的數量相等,則amountOfHotdogs可以佔用兩者的數量。

只有含量較大的配料纔會有剩菜,因此leftoverweiners = totalweiners - totalbuns;totalweiners > totalbuns反之亦然。

+0

這真的很有幫助,謝謝! – Robble

2

你讓它太複雜了。試試這個:

if(weiners > buns) 
{ 
    cout << "You can make " << buns << " hotdogs!" << endl; 
    cout << "with " << weiners-buns << " weiners left over" << endl; 
    return; 
} 
cout << "You can make " << weiners << " hotdogs!" << endl; 
if(buns > weiners) 
{ 
    cout << "with " << buns-weiners << " buns left over" << endl; 
} 

{包子,weiners}中較小的熱狗的數量和IF-THEN塊確定功能是否會報告剩下的包子或weiners。

+1

缺少'else'? –

+0

哈哈哈,看起來很簡單。我最初嘗試了類似的東西,但我想當它不適合我的時候,我改變了我的方法。我必須記得有時會繼續以同樣的方式嘗試。 – Robble