我试图使用几个用户定义的函数来计算各种形状的总面积(选择1-4)。
我也希望在计划结束时总计费用(选择5)。
我可以得到第一个(圆形)和最后一个(三角形)形状来计算,但不能得到中间两个。
当我尝试计算矩形和圆圈时,代码只是移过它,好像它正在跳过它。
谁能告诉我我做错了什么?
#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;
}
答案 0 :(得分:1)
在您的代码中:
{
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;
}
你这样做&#34; sqrTot + = sqrArea&#34;在if语句之前。
在矩形中你这样做:
{
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语句中。
我相信错误就在这里。如果不是,你能提供样品输出吗?
希望这有帮助!