i put the numbers into my calculator and i receive a number that is about $1 greater than the actual value. why?

#ifndef Tips_H
#define Tips_H
using namespace std;

class Tips
	long double taxRate,

		taxRate = 0;
		bill = 0;
		gratuity = 0;

	void setTaxRate(double t);
	void setBill(double b);
	void setGratuity(double g);
	void computeTip();



using namespace std;

void Tips::setTaxRate(double t)
{taxRate = t;if(taxRate == 0)taxRate = 0.065;if(taxRate<0){cout << "error! your tax can not be less then zero. pleaase restart program." <<endl;exit(0);}}

void Tips::setBill(double b)
{bill = b;if(bill<=0) {cout<<"Error! Your bill cannont be zero or less. Please re-start this program"<<endl; exit(0);}}
void Tips::setGratuity(double g)
{gratuity = g;if(gratuity<=0) {cout<<"Error! Your gratuity cannont be zero or less. Please re-start this program"<<endl; exit(0);}}

void Tips::computeTip()
double output;

output = ((taxRate * bill) + (bill) + (bill * gratuity));

cout << "You've entered: "<<endl;
cout << endl;
cout << fixed << showpoint << setprecision(2) << taxRate << endl;
cout << fixed << showpoint << setprecision(2) << bill << endl;
cout << fixed << showpoint << setprecision(2) << gratuity << endl;
cout << "Your total bill is $ "<< output <<endl;
cout << endl;


using namespace std;

int main()
	long double Tax1,
		int choice;
		choice = 0;
		Tips Ti;
cout <<"Enter the following to calculate your total bill"<<endl;
cout << endl;

Tax1 = 0.065;
cout << "Tax Rate is "<< Tax1<<endl;

cout << endl;
cout << "Enter your bill amount.  "<<endl;
cin   >>  Bill1;

cout <<endl;

cout << "Enter the Gratuity Rate You'd like to use (in decimal form)" <<endl;
cin >> Grat1;
cout << endl;


cout << "Would you like to calculate again? (Type 1 to repeat or 4 to quit) ";
cin  >> choice;
cout << endl;
cout << "-------------------------------------------------------"<<endl;
cout << endl;
}while(choice != 4);

7 Years
Discussion Span
Last Post by caut_baia

the tax is always .065 (rounds to .07 in program) and enter your own numbers for gratuity and bill amount


I don't understand your source code. It doesn't make any sense.

Plus, I see the big error you made by bothering with OOP. It makes of little use in small programs.

Edited by spoonlicker: n/a


I don't see anything wrong with the OOP concept being used. And in fact, it is recommended practice so that they can be reused in future.

Also, I do not see any error with the code. What's the number that caused the problem?


I'm not gonna point out some error but some guidelines in case you're interested.

#include <iostream>

class Tips {
   long double TaxRate,Bill,Gratuity;
      public :
         Tips ()
            : TaxRate(0.065),Bill(0),Gratuity(0) {} //initialization without executing body of the constructor

         Tips (int taxrate,int bill,int gratuity)
            : TaxRate(taxrate),Bill(bill),Gratuity(gratuity) {}
               //constructor makes mutators redundant in your case since you can initialize here

         ~Tips () {}

         long double ComputeTip ()  {
            if (TaxRate==0) TaxRate=0.065;
            //other conditions
            return (TaxRate*Bill) + Bill + (Bill*Gratuity);

int main ()  {
   long double taxrate,bill,gratuity;
   std::cin >> taxrate >> bill >> gratuity; //enter values
   Tips bill (taxrate,bill,gratuity);   //instantiation
   std::cout << bill.ComputeTip();

Hope it's of help to you.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.