我正在编写一个基本的C++程序来计算一条线的长度和斜率。用户输入一组x和y坐标点,然后程序显示菜单,询问用户他/她是否只想计算斜率,只计算长度,还是只计算斜率和长度。但是,我的void Menu函数出现错误,指出该变量具有不完整的类型“void”。我现在的代码如下。
#include <iostream>
#include <cmath>
void Menu (int& MenuNum);
void CalculateSlope (int& X1, int& X2, int& Y1, int& Y2);
void CalculateLength (int& X1, int& X2, int& Y1, int& Y2);
using namespace std;
int main(int argc, const char * argv[])
{
int X1;
int X2;
int Y1;
int Y2;
int MenuNum;
//Ask User for Points
cout << "Enter points (X1,Y1) and (X2,Y2) for the line." << endl;
cout << " " << endl;
cout << "X1:" << endl;
cin >> X1;
cout << "Y1:" << endl;
cin >> Y1;
cout << "X2:" << endl;
cin >> X2;
cout << "Y2:" << endl;
cin >> Y2;
cout << "Points entered are"
<< " : " << X1 << ","
<< Y1 << " and "
<< X2 << "," << Y2 << endl;
cout << " "<< endl;
//Menu
void Menu (MenuNum);
{
cout << "To calculate the slope of the line, enter 1 " << endl;
cout << "To calculate the length of the line, enter 2" << endl;
cout << "To calculate the length and slope of the line, enter 3" << endl;
cin >> MenuNum;
}
另外,如果您可以从“菜单”功能中获得有关如何调用斜率和长度计算功能的指导,那将是很好的。
谢谢!
最佳答案
首先,您看到错误“不完整的类型无效”的原因是因为您使用的分号实际上结束了Menu函数的函数定义。用外行的话来说,您还没有完全完成对功能的定义。
其次,按照惯例,您编写的简单C++程序应遵循以下代码布局。
您具有正确的程序顺序,只是需要在开始函数定义之前结束主要功能。
因此,您应该具有:
main()
{
...
}//End main function
void menu()
{
...
}
我注意到的另一件事是,如果要从命令行获取输入,通常会使用赋予主函数的参数。由于您要在程序中请求用户输入,因此应更改声明主函数的方式。
而不是使用
int main(int argc, const char * argv[])
{
...
}
这样声明
int main()
{
...
}
在我回答您的最后一个问题之前,您需要构建功能来处理用户的输入。这可以通过switch case语句来完成。如果您需要有关在C++中使用switch case语句的信息,可以在http://www.cplusplus.com/doc/tutorial/control/中找到很好的解释。
实现该switch语句的一种方法是放置对函数的调用,以计算switch情况下的线的斜率和长度。如果您这样做,则需要更改菜单功能参数的一件事。您还需要将坐标值传递给菜单功能。例如,
void Menu (MenuNum, X1, X2, Y1, Y2)
{
cout << "To calculate the slope of the line, enter 1 " << endl;
cout << "To calculate the length of the line, enter 2" << endl;
cout << "To calculate the length and slope of the line, enter 3" << endl;
cin >> MenuNum;
switch(MenuNume)
{
case 1:
{
//call calculate slope function
break;
}
case 2:
{
//call calculate length function
break;
}
case 3:
{
//call both calculate slope and calculate length functions
break;
}
default:
{
cout << "Please enter a correct value." << endl;
}
}
}
我认为这回答了您所有的问题。希望这可以帮助!
关于c++ - 接收错误变量的类型 "void"不完整,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16848150/