### Need help with Shipping Charges!

I am having trouble getting the final total amount correct, what am I doing wrong? please help!

A shipping company calculates charges based on parcel's weight and distance to be shipped.
The weight charges are:
0 to 10 pounds - > \$0.75 per pound
10 to 15 pounds - > \$0.85 per pound
15 to 20 pounds - > \$0.95 per pound
over 20 pounds NOT ALLOWED
Distance charges are:
0 to 50 miles - > \$0.07 per mile
50 to 100 miles - > \$0.06 per mile
100 to 200 miles - > \$0.05 per mile
200 to 500 miles - > \$0.04 per mile
over 500 miles NOT ALLOWED
Create a program proj3_1.cpp to compute the total charge based on the two schedules above. Your program should ask the user for the parcel's wight and distance to be shipped. Then it should compute and add the two charges into the final one to be displayed. IMPORTANT: Your program should display an ERROR for values that are not allowed for either weight, miles, or both. Not allowed values are negative or over the limit from the two schedules. Your program will be tested for such values.
Sample run:

Welcome to Cristian's Shipping Company!
Please enter the distance in miles to be shipped: 56
The total is computed as follows: 2.5 * 0.75 + 56 * 0.06, where of course the weight and miles are variables and not numbers.
Hint: Your program should have two series of if/else if statements: one to determine charge by weight and the other for charge by miles. In the end add and display the two charges or an error message for invalid input.

#include <iostream>
using namespace std;

int main (void)
{
double weight,
shipcharge,
distance;

float total_charge;

cout << "Welcome to Christian's Shipping Company ";
cout << "\n";
cout << "Please enter the weight in pounds of your package: ";
cin>>weight;

if (weight >= 0)
shipcharge = (0.75);
else if (weight > 0 && weight <= 10)
shipcharge = (weight * 0.75);
else if (weight > 10 && weight <= 15)
shipcharge = (weight * 0.85);
else if (weight > 15 && weight <= 20)
shipcharge = (weight * 0.95);

if (weight < 0 || weight > 20)
cout << "Error incorrect input";

cout << "Please enter the distance in miles to be shipped: ";
cin>>distance;
if (distance >= 0)
shipcharge = (0.07);
else if (distance > 0 && distance <= 50)
shipcharge = (distance * 0.07);
else if (distance > 50 && distance <= 100)
shipcharge = (distance * 0.06);
else if (distance > 100 && distance <= 200)
shipcharge = (distance * 0.05);
else if (distance <= 500)
shipcharge = (distance * 0.04);

if (distance < 0 || distance > 500)
cout << "Error incorrect input";

// coumpute total charge
total_charge = (weight * shipcharge) + (distance * shipcharge);

// display results
cout << "Your total charge is :\$ " << total_charge << endl;

system("Pause");
return 0;
}

There are a few problems with this.

Take a look at you total_charge formula. Notice that the shipcharge is factored in twice.

There are a couple of ways you can fix your problems. This is the easiest i think:

instead of calculating the shipcharge and the distance charge in the if statements, try just setting the variables to the multiplier, then use the multiplier to determine the distance and weight inputted from the user.

Take a look at these lines too:

 1234 if (weight >= 0) shipcharge = (0.75); else if (weight > 0 && weight <= 10) shipcharge = (weight * 0.75);

notice that they do almost exactly the same thing.

Topic archived. No new replies allowed.