无法正确计算公式

Can't get the formulas to calculate correctly

本文关键字:计算      更新时间:2023-10-16

我正在尝试使用多个用户定义的功能来计算各种形状的总面积(选择1-4)。

我还希望在计划结束时总计成本(选择5)。

i可以获得第一个(圆圈)和最后(三角形)形状来计算,而不是中间两个。

当我尝试计算矩形并圈出代码时,就好像它在跳过它一样。

谁能告诉我我做错了什么?

#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;
}

在您的代码中:

{
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;
}

您正在执行此" sqrtot = sqrarea"。

在矩形中,您正在这样做:

{
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;
}

recttot = rectarea;在if语句中。

我相信错误在这里。如果不是,您可以给样本输出吗?

希望这会有所帮助!