Visual Studios Issue where only first section is being displayed - c++

I am having some troubles where my code is only displaying the first section I have inputed "Sphere" and is not letting me input any other values when I go to Debug.
The basis of the code is to have the user choose a selction, and be able to input values to find the surface areas and volumes of a shape. Below is my code. (Also I am new to this so if there are any pointers I would greatly appreciate it!)
This is for an exam I have so just some input as to where I am going wrong would be great. I want to learn it not have the whole thing completed for me
#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
int main()
{
//Text
cout << "\nHello there! This program will help " << endl;
cout << "\ncalulate the surface areas and the " << endl;
cout << "\nvolumes of the displayed shapes below." << endl;
cout << endl;
cout << "----------------------------------------" << endl;
cout << " A: Sphere " << endl;
cout << " B: Cube " << endl;
cout << " C: Dodecahedron " << endl;
cout << " D: Cylinder " << endl;
cout << " E: Cone " << endl;
cout << "----------------------------------------" << endl;
cout << endl;
//Variables
double Sphere = 0.0,
Cube = 0.0,
Dodecahedron = 0.0,
Cylinder = 0.0,
Cone = 0.0;
float A = (Sphere),
B = (Cube),
C = (Dodecahedron),
D = (Cylinder),
E = (Cone);
//Question
enter code here
cout << "Please select one of the following..." << endl;
cin >> A;
cin >> B;
cin >> C;
cin >> D;
cin >> E;
{
//Sphere
int SphereRadius = 0.0;
double pi = 3.1415926535898;
double SphereSA = (4 * pi * (SphereRadius * SphereRadius));
double SphereV = ((int(4 / 3)) * (pi * (SphereRadius * SphereRadius * SphereRadius)));
if (Sphere);
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a radius. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> SphereRadius;
cout << endl;
cout << "\nWith the given radius... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << SphereSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << SphereRadius << endl;
}
{
//Cube
int CubeSide = 0.0;
double CubeSA = (6 * (CubeSide * CubeSide));
double CubeV = (CubeSide * CubeSide * CubeSide);
if (Cube);
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a side length. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the side length: " << endl;
cin >> CubeSide;
cout << endl;
cout << "\nWith the given side length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << CubeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << CubeV << endl;
cout << endl;
}
{
//Cone
int ConeH = 0.0;
double ConeR = 0.0;
double ConeSA = (pi * ConeR * (ConeR + sqrt((ConeH * ConeH) + (ConeR * ConeR))));
double ConeV = (pi * ((ConeR * ConeR) * (ConeH / 3)));
if (Cone);
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a radius and a height. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> ConeR;
cout << endl;
cout << "\nPlease input a positive number for the height: " << endl;
cin >> ConeH;
cout << endl;
cout << "\nWith the given side length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << ConeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << ConeV << endl;
cout << endl;
}
{
//Dodecahedron
int DodeEdge = 0.0;
double DodeSA = (3 * (sqrt(25 + 10 * sqrt(5) * DodeEdge)));
double DodeV = (DodeEdge * ((15 + (7 * sqrt(5)) / 4)));
if (Dodecahedron);
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need to have an edge. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the edge: " << endl;
cin >> DodeEdge;
string DodeEdge;
cout << "\nWith the given edge length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << DodeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << DodeV << endl;
cout << endl;
}
{
//Cylinder
int CylinderH = 0.0;
int CylinderR = 0.0;
double CylinderSA = ((2 * CylinderR * pi * CylinderH) + (2 * pi * (CylinderR * CylinderR)));
double CylinderV = (pi * (CylinderR * CylinderR) * CylinderH);
if (Cylinder);
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need to have a radius and a height. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> CylinderR;
cout << endl;
cout << "\nPlease input a positive number for the height: " << endl;
cin >> CylinderH;
cout << endl;
cout << "\nWith the given radius and height... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << CylinderSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << CylinderV << endl;
cout << endl;
}
return 0;
}

The error is that the code order is not correct:
int SphereRadius = 0.0;
double pi = 3.1415926535898;
double SphereSA = (4 * pi * (SphereRadius * SphereRadius));
double SphereV = ((int(4 / 3)) * (pi * (SphereRadius * SphereRadius * SphereRadius)));
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> SphereRadius;
I modified code by using switch-case:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
#define Sphere 1
#define Cube 2
#define Dodecahedron 3
#define Cylinder 4
#define Cone 5
using namespace std;
double pi = 3.1415926535898;
int main()
{
//Text
cout << "\nHello there! This program will help " << endl;
cout << "\ncalulate the surface areas and the " << endl;
cout << "\nvolumes of the displayed shapes below." << endl;
cout << endl;
cout << "----------------------------------------" << endl;
cout << " 1: Sphere " << endl;
cout << " 2: Cube " << endl;
cout << " 3: Dodecahedron " << endl;
cout << " 4: Cylinder " << endl;
cout << " 5: Cone " << endl;
cout << "----------------------------------------" << endl;
cout << endl;
cout << "Please select one of the following..." << endl;
//Variables
int UserSelect = 0;
cin >> UserSelect;
while (UserSelect < 1 || UserSelect>5)
{
cout << "Please select the right option" << endl;
cin >> UserSelect;
cout << endl;
}
switch (UserSelect)
{
case Sphere:
{
//Sphere
int SphereRadius = 0.0;
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a radius. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> SphereRadius;
cout << endl;
double SphereSA = (4 * pi * (SphereRadius * SphereRadius));
double SphereV = ((int(4 / 3)) * (pi * (SphereRadius * SphereRadius * SphereRadius)));
cout << "\nWith the given radius... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << SphereSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << SphereRadius << endl;
}
break;
case Cube:
{
//Cube
int CubeSide = 0.0;
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a side length. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the side length: " << endl;
cin >> CubeSide;
cout << endl;
double CubeSA = (6 * (CubeSide * CubeSide));
double CubeV = (CubeSide * CubeSide * CubeSide);
cout << "\nWith the given side length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << CubeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << CubeV << endl;
cout << endl;
}
break;
case Dodecahedron:
{
//Dodecahedron
int DodeEdge = 0.0;
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need to have an edge. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the edge: " << endl;
cin >> DodeEdge;
double DodeSA = (3 * (sqrt(25 + 10 * sqrt(5) * DodeEdge)));
double DodeV = (DodeEdge * ((15 + (7 * sqrt(5)) / 4)));
//string DodeEdge;
cout << "\nWith the given edge length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << DodeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << DodeV << endl;
cout << endl;
}
break;
case Cylinder:
{
//Cylinder
int CylinderH = 0.0;
int CylinderR = 0.0;
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need to have a radius and a height. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> CylinderR;
cout << endl;
cout << "\nPlease input a positive number for the height: " << endl;
cin >> CylinderH;
cout << endl;
double CylinderSA = ((2 * CylinderR * pi * CylinderH) + (2 * pi * (CylinderR * CylinderR)));
double CylinderV = (pi * (CylinderR * CylinderR) * CylinderH);
cout << "\nWith the given radius and height... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << CylinderSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << CylinderV << endl;
cout << endl;
}
break;
case Cone:
{
//Cone
int ConeH = 0.0;
double ConeR = 0.0;
cout << "\nIn order to find the surface area and " << endl;
cout << "\nvolume we will need a radius and a height. " << endl;
cout << endl;
cout << "\nPlease input a positive number for the radius: " << endl;
cin >> ConeR;
cout << endl;
cout << "\nPlease input a positive number for the height: " << endl;
cin >> ConeH;
cout << endl;
double ConeSA = (pi * ConeR * (ConeR + sqrt((ConeH * ConeH) + (ConeR * ConeR))));
double ConeV = (pi * ((ConeR * ConeR) * (ConeH / 3)));
cout << "\nWith the given side length... " << endl;
cout << endl;
cout << "\nSurface area will be: " << setprecision(2) << ConeSA << endl;
cout << endl;
cout << "\nVolume will be: " << setprecision(2) << ConeV << endl;
cout << endl;
}
break;
default:
break;
}
return 0;
}

Related

Incorrect user input

Trying to let only numbers be a vaild input for a quadratic equation solver. I used bool and broke my code and no matter the input it just gives me my error message even if it is a vaild input.
After the progarm ask you to confirm the coefficients are correct, even if you put Y you get the " Please input a number. Please try again". how do you fix this?
I added the bool becasue that what my teacher showed me to use for checking inputs, very new to c++ and coding. I just added the whole code, the HW was to update HW 5 to do a few things more. I broke it trying to check inputs, when adding bool.
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main()
{
string first, last;
double a, b, c, x1, x2, discriminant, realpart, imaginarypart;
char ch;
cout << "Please enter First and Last name," << endl;
cout << " " << endl;
cout << "First Name= ";
cin >> first;
cout << "and" << endl;
cout << "Last Name=";
cin >> last;
cout << " " << endl;
cout << " Hello " << first << " " << last << " "
<< "welcome." << endl;
cout << " " << endl;
bool isCorrect{ true };
do {
start:
isCorrect = true;
cout << "Enter the coefficients of a: ";
cin >> a;
cout << " " << endl;
cout << "Enter the coefficients of b: ";
cin >> b;
cout << " " << endl;
cout << "Enter the coefficient of c: ";
cin >> c;
cout << " " << endl;
cout << " A = " << a;
cout << " B = " << b;
cout << " C = " << c << endl
<< endl;
cout << " Confirm the coefficients value are correct or not (y/n): " << endl;
cout << " " << endl;
cin >> ch;
if (ch == 'n' || ch == 'N')
goto start;
cout << " " << endl;
discriminant = b * b - 4.0 * a * c;
if (cin.fail())
;
{
isCorrect = false;
cin.clear();
cin.ignore(245, '\n');
cout << " Please input a number. Please try again" << endl;
}
} while (!isCorrect);
bool isExit(false);
if (a == 0) {
cout << " " << endl;
cout << "Error message: a can not = zero (0) " << endl;
}
else if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2.0 * a);
x2 = (-b - sqrt(discriminant)) / (2.0 * a);
cout << "Roots are real and different." << endl;
cout << " " << endl;
cout << "x1 = " << x1 << endl;
cout << "x2 =" << x2 << endl;
}
else if (discriminant == 0) {
cout << "Roots are real and same." << endl;
cout << " " << endl;
x1 = -b / (2.0 * a);
cout << "x1 = x2 ="
" "
<< x1 << endl;
}
else {
//cout << "Error message: No real solution exist." << endl; // Part 1 error code for no real solutions
realpart = -b / (2.0 * a); //Code for part 2
imaginarypart = sqrt(-discriminant) / (2.0 * a); // Code for part 2
cout << "Roots are complex and different." << endl; // Code for part 2
cout << " " << endl;
cout << "x1 = " << realpart << "+" << imaginarypart << "i" << endl; // Code for part 2
cout << "x2 = " << realpart << "-" << imaginarypart << "i" << endl; // Code for part 2
}
cout << " " << endl;
cout << " Would you like to solve another quadratic equation (y/n): " << endl;
cin >> ch;
if (ch == 'y' || ch == 'Y')
goto start;
else
(ch == 'n' || ch == 'N');
return 0;
}

Why is the calculation in the subtotal of this program incorrect?

I am trying to create a C++ program that calculates sales tax for a customer and displays a receipt. For example, if you entered 10 as the first sale amount and the tax rate is 0.0825 it should display the total tax as $0.83. Why does my subtotal and total due at the end of the receipt display $10.82 when it should be $10.83?
//Customer Receipt
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
struct Item_Receipt
{
double item;
double cost;
double tax;
double subtotal;
};
int main()
{
vector <Item_Receipt> Store_Receipt;
Item_Receipt Purchase;
//Variables
const double item_tax = .0825;
double Item_Total = 0.0;
double Tax_Total = 0.0;
double Total_Sales = 0.0;
int numSales = 0;
cout << "First sales amount (Enter a 0 to stop): ";
cin >> Purchase.item;
Purchase.tax = Purchase.item * item_tax;
Purchase.subtotal = Purchase.item + Purchase.tax;
Store_Receipt.push_back(Purchase);
Item_Total += Purchase.item;
Tax_Total += Purchase.tax;
Total_Sales += Purchase.subtotal;
numSales++;
while (Purchase.item > 0.0)
{
cout << "Next sales amount (Enter a 0 to stop): ";
cin >> Purchase.item;
if(Purchase.item > 0.0)
{
Purchase.tax = Purchase.item * item_tax;
Purchase.subtotal = Purchase.item + Purchase.tax;
Store_Receipt.push_back(Purchase);
Item_Total += Purchase.item;
Tax_Total += Purchase.tax;
Total_Sales += Purchase.subtotal;
numSales++;
}
else
cout << endl << "That was the last item being puchased.\nHere is your itemized receipt." << endl << endl;
}
//end while
//Output
cout << "----------------------------------------- " << endl;
cout << "\tReceipt of Purchase" << endl;
cout << "----------------------------------------- " << endl << endl;
cout << fixed << setprecision(2);
cout << setw(10) << "Item Cost" <<
setw(15) << "Item Tax" <<
setw(15) << "Subtotal" << '\n';
cout << "----------------------------------------- " << endl;
for(int x=0;x<numSales;x++)
cout << setw(8) << Store_Receipt[x].item << setw(15) << Store_Receipt[x].tax <<
setw(15) << Store_Receipt[x].subtotal << endl;
cout << "----------------------------------------- " << endl;
cout << setw(10) << "Item Total" <<
setw(15) << "Tax Total" <<
setw(15) << "Total Due" << endl;
cout << setw(8) << Item_Total << setw(15) << Tax_Total <<
setw(15) << Total_Sales << endl;
cout << "----------------------------------------- " << endl;
cout << "\tYou purchased " << numSales << " items." << endl;
cout << "----------------------------------------- " << endl;
cout << "\tThank you! Have a nice day!" << endl;
cout << "----------------------------------------- " << endl;
cin >> numSales;
return 0;
}
setprecision(2) doesn't mean "round to 2 decimal digits," it means "display 2 decimal digits." The actual value is 10.825 but you're only displaying the first two decimal digits.
If you want to round away from the midpoint, you need to use one of the rounding functions on the result.
Since you want to round to the second decimal place, you have to first multiply the number by 100, then round it, then divide by 100. You could do this with the help of a function:
double round_to_cents(double v) {
return std::round(v * 100) / 100;
}
Then round the tax calculation:
Purchase.tax = round_to_cents(Purchase.item * item_tax);
(Demo)

Getting Bonus Pay to Calculate [duplicate]

This question already has answers here:
Adding Overtime Pay
(2 answers)
Closed 9 years ago.
I've got two ifs, the first if which is the overtime if works, but i cannot get the 2nd if to work, which is the bonus pay if days work is greater than 5.
It's not ready the if code i typed for bonuspay,
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
float ftax, stax, SDI, SS, hw, hp, dw(0), pay, netpay, gp, OvertimePay = 0,
bonusPay(0);
int daysWorked(0);
cout << "please enter the hoursWorked: ";
cin >> hw;
cout << "---------------------" << endl;
cout << "please enter the hourlyPay: ";
cin >> hp;
cout << "---------------------" << endl;
cout << "please enter the daysWorked in the week: ";
cin >> dw;
if (hw > 40) {
OvertimePay = (hw - 40) * hp * .5;
if (daysWorked > 5) {
bonusPay = (hw - 40) * hp * .25;
}
}
gp = (hw * hp) + (OvertimePay) + (bonusPay);
ftax = gp * .10;
stax = gp * .08;
SDI = gp * .01;
SS = gp * .06;
netpay = gp - (ftax + stax + SDI + SS);
cout << " grosspay =\t\t\t\t\t" << gp << endl;
cout << " federal taxes =\t\t\t\t" << ftax << endl;
cout << " state taxes =\t\t\t\t\t" << stax << endl;
cout << " SDI =\t\t\t\t\t\t" << SDI << endl;
cout << " Social Securities =\t\t\t\t" << SS << endl;
cout << " netpay =\t\t\t\t\t" << netpay << endl;
cout << "---------------------" << endl;
cout << "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" << endl;
cout << " grosspay = " << gp << endl;
cout << " federal taxes = " << ftax << endl;
cout << " state taxes = " << stax << endl;
cout << " SDI = " << SDI << endl;
cout << " Social Securities = " << SS << endl;
cout << " netpay = " << netpay << endl;
cout << "---------------------" << endl;
cout << "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" << endl;
cout << left;
cout << setw(30) << " grosspay =" << gp << endl;
cout << setw(30) << " federal taxes =" << ftax << endl;
cout << setw(30) << " state taxes =" << stax << endl;
cout << setw(30) << " SDI =" << SDI << endl;
cout << setw(30) << " Social Securities =" << SS << endl;
cout << setw(30) << " netpay =" << netpay << endl;
cout << "---------------------" << endl;
system("pause");
}
As from your question:
but i cannot get the 2nd if to work, which is the bonus pay if days work is greater than 5
Despite it's not completely clear what you're asking, one problem in your code for sure is that you check for the daysWorked value
if (daysWorked > 5) {
// ...
but you never set it again after initialization
int daysWorked(0);
anywhere I could spot in your code sample.
Thus the value of daysWorked will always be 0, and the code in the if() clauses is ignored.
Change
cin >>dw to cin >>daysWorked
I can see two mistakes here.
You initialised
float dw(0);
and
int daysWorked(0);
There is no reason for you to initialise that way seeing through your code, just leave it at
float dw;
int daysWorked;
Another problem I see in your code is, you are storing the value of days worked into dw as such
cout << "please enter the daysWorked in the week: ";
cin >> dw;
but yet you are checking for daysWorked
if (daysWorked > 5)
and in between there wasnt any code leading up to transferring the value of dw to daysWorked.
My advice is to change both dw and bonusPay from
float dw(0);
float bonusPay(0);
to
float dw;
float bonusPay;
and delete
int daysWorked(0);
lastly
if (hw > 40) {
OvertimePay = (hw - 40) * hp * .5;
if (dw > 5) {
bonusPay = (hw - 40) * hp * .25;
}
}

Total is not adding up at the end of C++ program

Hello I am working on an assignment. I have spent numerous hours and cannot figure out why at the end of my program the "Total Commission" and "Total Due" are not adding up. I am a beginner so anything that could lead me in the right direction would be greatly appreciated. Thanks.
original code
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const double PC_BASE_SALES = 6000.00, //PC is Personal Computers
PC_COMMISSION = 0.12,
PRINTER_BASE_SALES = 2500.00,
PRINTER_COMMISSION = 0.10,
ACCESSORIE_BASE_SALES = 2000.00,
ACCESSORIE_COMMISSION = 0.10,
MAINTENANCE_BASE_SALES = 1500.00,
MAINTENANCE_COMMISSION = 0.06;
double baseSalary = 0.00,
pcSales = 0.00,
printerSales = 0.00,
accessorieSales = 0.00,
maintenanceSales = 0.00,
totalCommission = 0.00,
totalDue = 0.00,
noCommission = 0.00,
pcCommission = baseSalary * PC_COMMISSION,
printerCommission = baseSalary * PRINTER_COMMISSION,
accessorieCommission = baseSalary * ACCESSORIE_COMMISSION,
maintenanceCommission = baseSalary * MAINTENANCE_COMMISSION;
int idNumber; //salesman identification number
do
{
cout << "Please Enter Salesman Identification or -999 to Terminate ";
cin >> idNumber;
if (idNumber == -999)
return 0;
else
cout << "Please Enter Salesman Base Salary\t\t\t ";
cin >> baseSalary;
cout << "Please Enter Personal Computer Sales\t\t\t ";
cin >> pcSales;
cout << "Please Enter Printer Sales\t\t\t\t ";
cin >> printerSales;
cout << "Please Enter Accessories Sales\t\t\t\t ";
cin >> accessorieSales;
cout << "Please Enter Maintenance Sales\t\t\t\t ";
cin >> maintenanceSales;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << "\t\t\t My Computer Company\n ";
cout << endl;
cout << "\t\t\t Commission Statement\n ";
cout << endl;
cout << "\t\t\t Salesman Number " << idNumber << endl;
cout << endl;
cout << "\t\t ********************************\n";
cout << endl;
cout << fixed;
cout << setprecision(2);
cout << left << setw(20) << "Product";
cout << right << setw(20) << "Sales Amount";
cout << right << setw(20) << "Commission";
cout << "\n" << endl;
cout << left << setw(20) << "Personal Computers";
cout << right << setw(20) << pcSales;
while (pcSales > PC_BASE_SALES)
{
double pcCommission = baseSalary * PC_COMMISSION;
cout << right << setw(20) << pcCommission;
cout << "\n" << endl;
pcCommission += totalCommission;
break;
}
while (pcSales < PC_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
break;
}
cout << left << setw(20) << "Printers";
cout << right << setw(20) << printerSales;
while (printerSales > PRINTER_BASE_SALES)
{
double printerCommission = baseSalary * PRINTER_COMMISSION;
cout << right << setw(20) << printerCommission;
cout << "\n" << endl;
printerCommission += totalCommission;
break;
}
while (printerSales < PRINTER_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
break;
}
cout << left << setw(20) << "Accessories";
cout << right << setw(20) << accessorieSales;
while (accessorieSales > ACCESSORIE_BASE_SALES)
{
double accessorieCommission = baseSalary * ACCESSORIE_COMMISSION;
cout << right << setw(20) << accessorieCommission;
cout << "\n" << endl;
accessorieCommission += totalCommission;
break;
}
while (accessorieSales < ACCESSORIE_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
break;
}
cout << left << setw(20) << "Maintenance";
cout << right << setw(20) << maintenanceSales;
while (maintenanceSales > MAINTENANCE_BASE_SALES)
{
double maintenanceCommission = baseSalary * MAINTENANCE_COMMISSION;
cout << right << setw(20) << maintenanceCommission;
cout << "\n" << endl;
maintenanceCommission += totalCommission;
break;
}
while (maintenanceSales < MAINTENANCE_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
cout << endl;
break;
}
cout << endl;
totalCommission = pcCommission + printerCommission + accessorieCommission +
maintenanceCommission;
totalDue = baseSalary + totalCommission;
cout << left << setw(20) << "Total Commission";
cout << right << setw(40) << totalCommission;
cout << "\n" << endl;
cout << left << setw(20) << "Base Pay";
cout << right << setw(40) << baseSalary;
cout << "\n" << endl;
cout << left << setw(20) << "Total Due";
cout << right << setw(40) << totalDue;
cout << "\n" << endl;
} while ( idNumber != -999);
system ("PAUSE");
return 0;
updated code
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const double PC_BASE_SALES = 6000.00, //PC is Personal Computers
PC_COMMISSION = 0.12,
PRINTER_BASE_SALES = 2500.00,
PRINTER_COMMISSION = 0.10,
ACCESSORIE_BASE_SALES = 2000.00,
ACCESSORIE_COMMISSION = 0.10,
MAINTENANCE_BASE_SALES = 1500.00,
MAINTENANCE_COMMISSION = 0.06;
double baseSalary = 0.00,
pcSales = 0.00,
printerSales = 0.00,
accessorieSales = 0.00,
maintenanceSales = 0.00,
totalCommission = 0.00,
totalDue = 0.00,
noCommission = 0.00,
pcCommission = baseSalary * PC_COMMISSION,
printerCommission = baseSalary * PRINTER_COMMISSION,
accessorieCommission = baseSalary * ACCESSORIE_COMMISSION,
maintenanceCommission = baseSalary * MAINTENANCE_COMMISSION;
int idNumber; //salesman identification number
do
{
cout << "Please Enter Salesman Identification or -999 to Terminate ";
cin >> idNumber;
if (idNumber == -999)
return 0;
else
cout << "Please Enter Salesman Base Salary\t\t\t ";
cin >> baseSalary;
cout << "Please Enter Personal Computer Sales\t\t\t ";
cin >> pcSales;
cout << "Please Enter Printer Sales\t\t\t\t ";
cin >> printerSales;
cout << "Please Enter Accessories Sales\t\t\t\t ";
cin >> accessorieSales;
cout << "Please Enter Maintenance Sales\t\t\t\t ";
cin >> maintenanceSales;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << "\t\t\t My Computer Company\n ";
cout << endl;
cout << "\t\t\t Commission Statement\n ";
cout << endl;
cout << "\t\t\t Salesman Number " << idNumber << endl;
cout << endl;
cout << "\t\t ********************************\n";
cout << endl;
cout << fixed;
cout << setprecision(2);
cout << left << setw(20) << "Product";
cout << right << setw(20) << "Sales Amount";
cout << right << setw(20) << "Commission";
cout << "\n" << endl;
cout << left << setw(20) << "Personal Computers";
cout << right << setw(20) << pcSales;
if (pcSales > PC_BASE_SALES)
{
double pcCommission = baseSalary * PC_COMMISSION;
cout << right << setw(20) << pcCommission;
cout << "\n" << endl;
totalCommission += pcCommission;
}
if (pcSales < PC_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
}
cout << left << setw(20) << "Printers";
cout << right << setw(20) << printerSales;
if (printerSales > PRINTER_BASE_SALES)
{
double printerCommission = baseSalary * PRINTER_COMMISSION;
cout << right << setw(20) << printerCommission;
cout << "\n" << endl;
totalCommission += printerCommission;
}
if (printerSales < PRINTER_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
}
cout << left << setw(20) << "Accessories";
cout << right << setw(20) << accessorieSales;
if (accessorieSales > ACCESSORIE_BASE_SALES)
{
double accessorieCommission = baseSalary * ACCESSORIE_COMMISSION;
cout << right << setw(20) << accessorieCommission;
cout << "\n" << endl;
totalCommission += accessorieCommission;
}
if (accessorieSales < ACCESSORIE_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
}
cout << left << setw(20) << "Maintenance";
cout << right << setw(20) << maintenanceSales;
if (maintenanceSales > MAINTENANCE_BASE_SALES)
{
double maintenanceCommission = baseSalary * MAINTENANCE_COMMISSION;
cout << right << setw(20) << maintenanceCommission;
cout << "\n" << endl;
totalCommission += maintenanceCommission;
}
if (maintenanceSales < MAINTENANCE_BASE_SALES)
{
cout << right << setw(20) << noCommission;
cout << "\n" << endl;
cout << endl;
}
cout << endl;
totalCommission = pcCommission + printerCommission + accessorieCommission + maintenanceCommission;
totalDue = baseSalary + totalCommission;
cout << left << setw(20) << "Total Commission";
cout << right << setw(40) << totalCommission;
cout << "\n" << endl;
cout << left << setw(20) << "Base Pay";
cout << right << setw(40) << baseSalary;
cout << "\n" << endl;
cout << left << setw(20) << "Total Due";
cout << right << setw(40) << totalDue;
cout << "\n" << endl;
} while ( idNumber != -999);
system ("PAUSE");
return 0;
}
Are you intentionally writing code for a obfuscated C++ competition?
This (as an example of several similar ones):
while (printerSales > PRINTER_BASE_SALES)
{
double printerCommission = baseSalary * PRINTER_COMMISSION;
cout << right << setw(20) << printerCommission;
cout << "\n" << endl;
printerCommission += totalCommission;
break;
}
is exactly the same as :
if (printerSales > PRINTER_BASE_SALES)
{
double printerCommission = baseSalary * PRINTER_COMMISSION;
cout << right << setw(20) << printerCommission;
cout << "\n" << endl;
printerCommission += totalCommission;
}
since the break is unconditional inside the loop, and thus makes the loop only ever run once. This is possibly what you wanted in the first place.
Also, since printerCommission is a local variable inside the loop, this will not do anything useful.
printerCommission += totalCommission;
did you mean:
totalCommission += printerCommission;
Also, as the comments say, using double or float to calculate money will eventually go wrong, because floating point values will sometimes round off incorrectly. For example, in binary floating point representation, the values 0.1, 0.2 and 0.6 and 0.7 would be 0.099999999999999, 0.199999999999999, 0.59999999999999 and 0.699999999999 respectively. It's the same as trying to express 1/3 in decimals, 0.333333333 - no matter how many digits are used, it can not be "exactly 1/3". If you do enough math using such values, it will end up "wrong". But you should get approximately the right value, give or take a cent or whatever the small part of the currency is called.
Here is an issue I found:
An else statement without { and } will only execute the next statement:
do
{
cout << "Please Enter Salesman Identification or -999 to Terminate ";
cin >> idNumber;
if (idNumber == -999)
return 0;
else // <--- This else will cause only the next line to be executed
// since there is no '{' following it.
cout << "Please Enter Salesman Base Salary\t\t\t ";
cin >> baseSalary;
Have you single stepped through the code with a debugger?

Help implementing a "store buying" program

My professor instructed us to make a Starbucks like menu where the user can continue to input orders until they are finished. I got the menu display down along with the loop, but I can't get it to add up the orders that were inputted and display a total.
#include <iostream>
using namespace std;
int main()
{
int choice = 1;
cout << endl << "Welcome to Hunterbucks!";
while (choice > 0)
{
cout << endl << "Input -1 when you're finished ordering!";
cout << endl << endl << "Coffee" << " " << "($)";
cout << endl << "1. Regular" << " " << "1.50";
cout << endl << "2. Decaf" << " " << "1.23";
cout << endl << "3. Americano" << " " << "2.25";
cout << endl << "4. Espresso" << " " << "2.25";
cout << endl << "5. Latte" << " " << "2.50";
cout << endl << "6. Cappuccino" << " " << "2.75";
cout << endl << "7. Frappuccino" << " " << "2.75";
cout << endl << "8. Macchiato" << " " << "2.50";
cout << endl << endl << "Snacks" << " " << "($)";
cout << endl << "9. Muffin" << " " << "1.00";
cout << endl << "10. Blueberry Muffin" << " " << "1.25";
cout << endl << "11. Raspberry Muffin" << " " << "1.25";
cout << endl << "12. Scone" << " " << "0.75";
cout << endl << "13. Blueberry Scone" << " " << "1.00";
cout << endl << "14. Croissant" << " " << "0.75";
cout << endl << endl << "What would you like to order? ";
cin >> choice;
if (choice <= 0)
cout << endl << "Thank you for your order.";
else
cout << endl << "What else would you like to order?";
}
cout << endl << "Thank you for choosing Hunterbucks! Come again soon.";
return 0;
}
Any info that can help me? I'm just a beginner and have been trying this for a few hours.
In pseudo-code you want something like this:
float total = 0.0;
while (choice > 0)
{
....
cin >> choice;
if (choice <= 0)
cout << endl << "Thank you for your order.";
else
{
total += costs[choice];
cout << endl << "What else would you like to order?";
}
}
You'll need to define an array names costs that contains the cost of each item. You'll also want to tackle validation of the user input so that you don't erroneously attempt to read outside the range of the costs array.
You're probably looking at something like this:
#include <iostream>
using namespace std;
int main()
{
int choice = 1;
float sum = 0.0;
float arr[] = {
0.00, 1.50, 1.23, 2.25, 2.25, 2.50, 2.75, 2.75, 2.50,
1.00, 1.25, 1.25, 0.75, 1.00, 0.75
};
cout << endl << "Welcome to Hunterbucks!";
while (choice > 0)
{
cout << endl << "Input -1 when you're finished ordering!";
cout << endl << endl << "Coffee" << " " << "($)";
cout << endl << "1. Regular" << " " << "1.50";
cout << endl << "2. Decaf" << " " << "1.23";
cout << endl << "3. Americano" << " " << "2.25";
cout << endl << "4. Espresso" << " " << "2.25";
cout << endl << "5. Latte" << " " << "2.50";
cout << endl << "6. Cappuccino" << " " << "2.75";
cout << endl << "7. Frappuccino" << " " << "2.75";
cout << endl << "8. Macchiato" << " " << "2.50";
cout << endl << endl << "Snacks" << " " << "($)";
cout << endl << "9. Muffin" << " " << "1.00";
cout << endl << "10. Blueberry Muffin" << " " << "1.25";
cout << endl << "11. Raspberry Muffin" << " " << "1.25";
cout << endl << "12. Scone" << " " << "0.75";
cout << endl << "13. Blueberry Scone" << " " << "1.00";
cout << endl << "14. Croissant" << " " << "0.75";
cout << endl << endl << "What would you like to order? ";
cin >> choice;
if (choice <= 0){
cout << endl << "Thank you for your order.";
} else {
cout << endl << "What else would you like to order?";
sum += arr[choice];
}
}
cout << "Total: " << sum << endl;
cout << endl << "Thank you for choosing Hunterbucks! Come again soon.";
return 0;
}
Do note the following:
1) Your menu choices being with '1' thus there is a need to offset your arr at index '0' with the '0.00' value there.
2) The cost added up follows that of your indexed array, thus you would probably want to format your output according to your array, so that next time, all you need to do is to update your array.
Hope it helped. Cheers!
The way you have your code set up warrants a switch statement, like the following:
double total = 0;
switch (choice)
{
case 1:
total += 1.50; // Regular.
break;
case 2:
total += 1.23; // Decaf.
break;
// Etc.
}
cout << endl << "Your total is " << total;
That being said, the easiest way to do this would be to have an array of prices:
double prices[] = {1.50, 1.23, 2.25};
// ...
total += prices[choice - 1]; // No switch statement needed.