2015-09-14 67 views
-1

我應該讓用戶輸入他們的購買價格來找出運費。我遇到的問題是,如果我輸入高於1,000美元的任何值,運輸價值將始終爲8美元。C++ if else語句不顯示正確的值

#include "stdafx.h" 
#include <iostream> 
#include <iomanip> 
#include <string> 

using namespace std; 

void main() 
{ 
    double saleAmount, shipping = 0; 


    cout << "Enter a purchase amount to find out your shipping charges." << endl; 
    cout << "Please enter the amount of your purchase: $" << endl; cin >> saleAmount; 

    if (saleAmount > 5,000.00) 
    { 
     shipping = 20.00; 
    } 

    else if (saleAmount > 1,000.00) 
    { 
     shipping = 15.00; 
    } 

這是它不承認10.00美元以上的航運。如果我在控制檯應用上輸入1500,它總是會告訴我運費是10美元。超過5000美元的任何價值也是如此。我試圖看看有什麼問題,但在我的生活中找不到它。

else if (saleAmount > 500.00) 
    { 
     shipping = 10.00; 
    } 
    else if (saleAmount > 250.00) 
    { 
     shipping = 8.00; 
    } 
    else 
    { 
     shipping = 0.00; 
    } 

    if (shipping == 0.00) 
    { 
     cout << "Error incorrect input" << endl; 
    } 
    else 
    { 
     cout << "The shipping charge on a purchase of $ " << saleAmount << " is $" << shipping << endl; 
    } 
} 
+3

您不能在C中輸入逗號。 – Barmar

+0

數字不包含逗號','。 – Xufox

+2

來自C++的FWIW 14 [可選單引號(')可能作爲分隔符插入數字之間,它們被編譯器忽略。](http://en.cppreference.com/w/cpp/language/ integer_literal) –

回答

2

聲明

if (saleAmount > 5,000.00) 

等同於:

if ((saleAmount > 5) , 000.00) 

它的計算結果爲

if (0.000) 

因此,代碼if說法從來沒有得到下塊執行。

正如已經在評論中指出的那樣,從數字中刪除,。用途:

if (saleAmount > 5000.00) 
2

的最嚴重的問題,這個代碼是在這些線路上:

if (saleAmount > 5,000.00) 
else if (saleAmount > 1,000.00) 

當我編譯GCC程序和所有的警告開啓時,這些線路產生以下消息:

warning: left operand of comma operator has no effect 

你明白現在的問題是什麼?

2

刪除,從5,000和1,000,它應該工作。

if (saleAmount > 5000.00) 
else if (saleAmount > 1000.00)