Ich versuche mehrere benutzerdefinierte Funktionen zu verwenden, um die Gesamtfläche verschiedener Formen zu berechnen (Auswahl 1-4).Die Formeln können nicht korrekt berechnet werden
Ich möchte auch die Kosten am Ende des Programms (Auswahl 5) summiert haben.
Ich kann die ersten (Kreis) und letzten (Dreieck) Formen berechnen, aber nicht die mittleren zwei.
Wenn ich versuche, das Rechteck und den Kreis zu berechnen, bewegt sich der Code einfach über ihn hinaus, als ob er überspringt.
Kann mir jemand sagen, was ich falsch mache?
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
//predefined functions
double square(double sqrSide, double sqrArea, double& sqrTot);
double rectangle(double rectLength, double rectWidth, double& rectArea, double& rectTot);
double circle(double radius, double& cirTot, double circleArea);
double triangle(double triBase, double triHeight, double& triTot, double triArea);
//constants
const double MATERIAL_COST = 2.59;
const double LABOR_COST = 32.5;
const double PIE = 3.14;
const double TAX = .0825;
int main()
{
// declare and initialize the variables for the shape
int selection;
double sqrSide = 0;
double sqrArea = 0;
double rectLength = 0;
double rectWidth = 0;
double rectArea = 0;
double radius = 0;
double circleArea = 0;
double triBase = 0;
double triHeight = 0;
double triArea = 0;
double sqrTot = 0;
double rectTot = 0;
double cirTot = 0;
double triTot = 0;
do
{
// get input from user as to what they want to do
cout << "Carpet Area Shape" << endl;
cout << "1. Square" << endl;
cout << "2. Rectangle" << endl;
cout << "3. Circle" << endl;
cout << "4. Triangle" << endl;
cout << "5. Done" << endl;
cout << "Type a number to continue: ";
cin >> selection;
cout << endl;
// loop through the solutions based on the user's selection
switch (selection)
{
case 1: // square
// get the length of the side from the user
cout << "What is the length of the square: ";
cin >> sqrSide;
//get the totals of all the shapes
square(sqrSide, sqrArea, sqrTot);
rectangle(rectLength, rectWidth, rectArea, rectTot);
circle(radius, cirTot, circleArea);
triangle(triBase, triHeight, triTot, triArea);
break;
case 2:// rectangle
// get the length of the side from the user
cout << "What is the length of the rectangle: ";
cin >> rectLength;
cout << "What is the width of the rectangle: ";
cin >> rectWidth;
//get the totals of all the shapes
square(sqrSide, sqrArea, sqrTot);
rectangle(rectLength, rectWidth, rectArea, rectTot);
circle(radius, cirTot, circleArea);
triangle(triBase, triHeight, triTot, triArea);
break;
case 3:// circle
// get the radius of the circle from the user
cout << "What is the radius of the circle: ";
cin >> radius;
//get the totals of all the shapes
square(sqrSide, sqrArea, sqrTot);
rectangle(rectLength, rectWidth, rectArea, rectTot);
circle(radius, cirTot, circleArea);
triangle(triBase, triHeight, triTot, triArea);
break;
case 4:// triangle
// get the length of the base from the user
cout << "What is the base of the triangle: ";
cin >> triBase;
// get the height of the triangle from the user
cout << "What is the height of the triangle: ";
cin >> triHeight;
//get the totals of all the shapes
square(sqrSide, sqrArea, sqrTot);
rectangle(rectLength, rectWidth, rectArea, rectTot);
circle(radius, cirTot, circleArea);
triangle(triBase, triHeight, triTot, triArea);
break;
case 5:// exit
system("cls");
//get the totals of all the sheets before the totals page
square(sqrSide, sqrArea, sqrTot);
// rectangle(rectLength, rectWidth, rectArea, rectTot);
circle(radius, cirTot, circleArea);
triangle(triBase, triHeight, triTot, triArea);
//declare the variable that will be used for the total section
double totalArea;
double carpetCost;
double laborCost;
double subTotal;
double tax;
double totalCost;
//initialize the variable that will be used for the total section
totalArea = sqrTot + rectTot + circleArea + triArea;
carpetCost = totalArea * MATERIAL_COST;
laborCost = (totalArea/100) * LABOR_COST;
subTotal = carpetCost + laborCost;
tax = subTotal * TAX;
totalCost = subTotal + tax;
//the total section
cout << "Total of the area: " << totalArea << endl;
cout << " Carpet Cost: $" << carpetCost << endl;
cout << " Labor Cost: $" << laborCost << endl;
cout << " Sub Total: $" << subTotal << endl;
cout << " Tax: $" << tax << endl;
cout << " Total of charge: $" << totalCost << endl;
break;
default: "You have made an invalid selection. Please choose a number from the list.";
cout << endl;
}
// loop through if the user is still making a valid selection
} while (selection > 0 && selection < 5);
system("pause");
return 0;
}
//user defined function to get the area of the square
double square(double sqrSide, double sqrArea, double& sqrTot)
{
sqrArea = sqrSide * sqrSide;
//get the total area and store it as a variable
sqrTot += sqrArea;
if (sqrTot > 0) {
cout << endl;
cout << " Shape: SQUARE " << endl;
cout << " Side: " << sqrSide << " feet" << endl;
cout << " Area: " << sqrArea << " square feet" << endl;
cout << "Total Area: " << sqrTot << " square feet" << endl;
cout << endl;
}
else
{
cout << endl;
}
return sqrTot;
}
//user defined function to get the area of the rectangle
double rectangle(double rectLength, double rectWidth, double& rectArea, double& rectTot)
{
rectArea = rectLength * rectWidth;
if (rectTot > 0) {
//get the total area and store it as a variable
rectTot += rectArea;
cout << " Shape: RECTANGLE " << endl;
cout << " Length: " << rectLength << " feet" << endl;
cout << " Width: " << rectWidth << " feet" << endl;
cout << " Area: " << rectArea << " square feet" << endl;
cout << "Total Area: " << rectTot << " square feet" << endl;
cout << endl;
}
else
{
cout << endl;
}
return rectTot;
}
//user defined function to get the area of the circle
double circle(double radius, double& cirTot, double circleArea)
{
//get the total area and store it as a variable
circleArea = PIE * radius * radius;
if (cirTot > 0) {
//get the total area and store it as a variable
cirTot += circleArea;
cout << " Shape: CIRCLE " << endl;
cout << " Radius: " << radius << " feet" << endl;
cout << " Area: " << circleArea << " square feet" << endl;
cout << "Total Area: " << cirTot << " square feet" << endl;
cout << endl;
}
else
{
cout << endl;
}
return cirTot;
}
//user defined function to get the area of the triangle
double triangle(double triBase, double triHeight, double& triTot, double triArea)
{
triArea = (triBase*triHeight)/2;
// get the total area and store it as a variable
triTot += triArea;
if (triTot > 0) {
//get the total area and store it as a variable
triTot += triArea;
cout << " Shape: TRIANGLE " << endl;
cout << " Base: " << triBase << " feet" << endl;
cout << " Height: " << triHeight << " feet" << endl;
cout << " Area: " << triArea << " square feet" << endl;
cout << "Total Area: " << triTot << " square feet" << endl;
cout << endl;
}
else
{
cout << endl;
}
return triTot;
}
Warum verwenden Sie einen "doppelten" Präzisionstyp (der Ihnen 15 signifikante Präzisionszahlen gibt), aber Ihre Approximation für "PIE" [sic] ist nur 3 signifikante Zahlen? – Bathsheba
Das ist eine Menge Code. Kannst du nicht bitte versuchen, ein [** minimales **, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und uns zu zeigen? Geben Sie außerdem einige Beispieleingaben an, die Ihr Problem zusammen mit der erwarteten und tatsächlichen Ausgabe verursachen. –
Sie sollten auch lernen, einen Debugger zu verwenden. Dann können Sie den Code Zeile für Zeile durchgehen, während Sie Variablen und ihre Werte überwachen. Mit einem Debugger sollte man ziemlich schnell sagen, was das Problem ist. –