2014-02-18 51 views
1

我试图使用if语句来检查输入的数字是否符合我允许的范围。但显然它不起作用。这里是我的if语句在C++中使用if语句检查范围

用户输入的重量和我检查它是否是小/重量顶部

const float SMALL_WEIGHT  = 2.3f;  // low end 1st range weight 
    const float TOP_SMALL_WEIGHT = 4.3f;  // top end 1st range weight 

    cout << "Enter the weight of the laptop: "; 
    cin >> weight; 

      if (weight < SMALL_WEIGHT && weight > TOP_SMALL_WEIGHT) 
      { 
       cout << "The weight " << weight << " is not between " 
        << SMALL_WEIGHT << " and " << TOP_WEIGHT << endl; 
       return 1; 
      } 

之间我试图用逻辑或||但它仍然不起作用。

编辑:这是整个代码

#include <iostream>  
#include <iomanip>  
using namespace std; 

const float SALE_START_PRICE = 500.0f; // discount if more than 500 
const float DISCOUNT_PCT  = .15f;  // 15% discount 
const float TAX_PCT    = .075f;  // tax is 7.5% 

const float SMALL_WEIGHT  = 2.3f;  // low end 1st range weight 
const float TOP_SMALL_WEIGHT = 4.3f;  // top end 1st range weight 
const float TOP_MID_WEIGHT  = 5.8f;  // top 2nd range weight 
const float TOP_WEIGHT   = 7.9f;  // top 3rd range weight 

const float SMALL_SHIP   = 5.4f;  // 1st range basic ship charge 
const float MID_SHIP   = 5.8f;  // 2nd range basic ship charge 
const float TOP_SHIP   = 6.2f;  // 3rd range basic ship charge 

const float SMALL_SHIP_PCT  = .025f; 
const float MID_SHIP_PCT  = 2.75f; 
const float TOP_SHIP_PCT  = 3.5; 

int main() 
{ 
    float price, weight; 
    float discountAmount, salePrice;        
    float taxAmount, shippingCharges, totalSaleAmount; 

    cout << "Enter the original price of the laptop: ";    
    cin >> price; 

    cout << "Enter the weight of the laptop: "; 
    cin >> weight; 


    if (weight < SMALL_WEIGHT && weight > TOP_SMALL_WEIGHT) 
    { 
     cout << "The weight " << weight << " is not between " 
      << SMALL_WEIGHT << " and " << TOP_WEIGHT << endl; 
     return 1; 
    } 

    if (price > SALE_START_PRICE) 
    { 
     discountAmount = price * DISCOUNT_PCT; 
    } 
    else 
     discountAmount = 0.00; 

    taxAmount = price * TAX_PCT; 
    salePrice = price - discountAmount; 


    if (weight < TOP_SMALL_WEIGHT) 
     shippingCharges = SMALL_SHIP + (salePrice * SMALL_SHIP_PCT); 
    else if (weight >= TOP_SMALL_WEIGHT && weight < MID_SHIP) 
     shippingCharges = MID_SHIP + (salePrice * MID_SHIP_PCT); 
    else 
     shippingCharges = TOP_SHIP + (salePrice * TOP_SHIP_PCT); 

    totalSaleAmount = salePrice + taxAmount + shippingCharges; 

    cout << fixed << showpoint << setprecision(2); 
    cout << "The original price : $" << price << endl; 
    cout << "The discount  : $" << discountAmount << endl; 
    cout << "The sale price  : $" << salePrice << endl; 
    cout << "The sales tax  : $" << taxAmount << endl; 
    cout << "The shipping  : $" << shippingCharges << endl << endl; 
    cout << "The total sale  : $" << totalSaleAmount << endl; 

    return 0;          
}        
+3

''||应该工作。也许你应该发布完整的代码。 – herohuyongtao

+0

什么类型的体重被宣称为? –

+0

浮动,我发布了整个代码 – Na9er

回答

3

weight不能同时小于SMALL_WEIGHT并大于TOP_SMALL_WEIGHT

我想你想使用一个逻辑或||所以就变成:

if (weight < SMALL_WEIGHT || weight > TOP_SMALL_WEIGHT) 
{ 
    cout << "The weight " << weight << " is not between " 
     << SMALL_WEIGHT << " and " << TOP_WEIGHT << endl; 
    return 1; 
} 
+0

我正要按完全相同的答案,:P的帖子。 –

+0

谢谢大家,当我将它改为或。我试着把权重设置为5.5(这是在范围之间),它给出了错误信息,就好像我在它之外输入了一些东西。 – Na9er

+1

@ na9er 5.5根据您发布的代码超出范围。 –