-6

任务是编写一个程序,允许用户计算各种形状的面积和体积。不允许使用任何全局变量,只有一个例外PI

#include <iostream>
#include <iomanip>
using namespace std;

//Functions
void showMenu(int &);
double area (double, double);
double area (double);
double volume (double, double, double);
double volume (double);

int main()
{
   int choice;
   double area, volume;
   const double PI = 3.14;

   do
   {
       showMenu();
       cin >> choice;

       if (choice < 1 || choice > 5 )
       {
        cout << "Please select a valid choice of 1-5: " << endl;
        cin >> choice;
       }
    else if (choice == 1)
    {

        area = double area (double length, double width);
        cout << "The area of the rectangle is: " << endl;

    }
    else if (choice == 2)
    {

        area = double area (double radius);
        cout << "The area of the circle is: " << endl;

    }
    else if (choice == 3)
    {

        volume = double volume (double length, double width, double height);
        cout << "The volume for a box is: " << endl;

    }
    else if (choice == 4)
    {

        volume = double volume (double radius);
        cout << "The volume of a sphere is: " << endl;

    }
}
    while (choice != 5);
return 0;
}


void ShowMenu(int &choice)
{
cout << "1. Calculate the area of a rectangle";
cout << "2. Calculate the area of a circle";
cout << "3. Calculate the volume for a box";
cout << "4. Calculate the volume of a sphere";
cout << "5. Quit";
}

double area (double length, double width);
{
cout << "Enter the length: ";
cin >> length;
cout << "Enter the width: ";
cin >> width;
area = lenght * width;
}

double area (double radius);
{
cout << "Enter the radius: ";
cin >> radius;
area = PI * (radius * 2);
}

double volume (double length, double width, double height);
{
cout << "Enter the length: ";
cin >> length;
cout << "Enter the width: ";
cin >> width;
cout << "Enter the height: ";
cin >> height;
volume = length * width * height;
} 

double volume (double radius);
{
cout << "Enter the radius: ";
cin >> radius;
volume = (4/3) * PI * (radius * 3)
}

我得到的错误:

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(20): 错误 C2660: 'showMenu' : 函数不接受 0 个参数

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(31): error C2062: type 'double' unexpected

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(38): error C2062: type 'double' unexpected

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(45): error C2062: type 'double' unexpected

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(52): error C2062: type 'double' unexpected

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(71): 错误 C2447: '{' : 缺少函数头(旧式正式列表?)

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(80): error C2447: '{' : missing function header (old-style form list?)

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(87): error C2447: '{' : missing function header (old-style form list?)

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\labfour.cpp(98): error C2447: '{' : missing function header (old-style form list?)

1> Lab4.cpp 1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\lab4.cpp(117): 警告 C4244: '=' : 从 'double' 转换为 'float',可能丢失数据

1>c:\users\dylan\documents\visual studio 2010\projects\lab4\lab4\lab4.cpp(127): error C2447: '{' : missing function header (old-style form list?)

4

3 回答 3

5

纠正编译时错误并不是一项艰巨的任务。按照错误消息并尝试找出问题。我将在您的代码中向您展示一些示例来解决错误。您的代码有很多错误,这表明您需要在 C++ 中进行更多练习。

showMenuis的声明,void showMenu(int &)但您通过以下方式调用它showMenu()

void showMenu(int &);
              ^^^^^
                Remove it

此外,要调用函数,您不应传递类型:

area = double area (double length, double width);
       ^^^^^^              ^^^^^^         ^^^^^^

另外,在实现一个函数时,你不能;在函数签名之后加上:

double area (double radius); <--- remove semicolon
{
于 2013-10-02T07:20:01.997 回答
2
  • 这是错误的:

    area = double area (double length, double width);
    

    您从 中返回值area(),而不是声明它。只需调用函数:

    area = area(double length, double width);
    
  • 您的计算area(double radius)不正确:

    area = PI * (radius * 2);
    

    那就是计算周长。你应该计算面积:

    area = PI * (radius * radius);
    

    我看不出PI该功能是如何识别的。它在 中初始化main(),但没有传递给函数或放在全局范围内。

于 2013-10-02T07:24:11.957 回答
1

在以下情况下您忘记了分号:

volume = (4/3) * PI * (radius * 3)

函数声明错误:

double area (double radius);
{

应该是(不带分号)

double area (double radius) {
于 2013-10-02T07:22:19.443 回答