6

線の長さと傾きを計算する基本的な C++ プログラムをコーディングしています。ユーザーが x 座標点と y 座標点のセットを入力すると、プログラムはメニューを表示して、勾配のみを計算するか、長さのみを計算するか、勾配と長さの両方を計算するかをユーザーに尋ねます。しかし、void メニュー関数で、変数の型が「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 機能から傾斜角と長さの計算機能を呼び出す方法についてもご案内いただければ幸いです。

ありがとう!

4

3 に答える 3

2

まず、"incomplete type void" というエラーが表示される理由は、Menu 関数の関数定義を実質的に終了させるセミコロンがあるためです。簡単に言えば、関数の定義が完全に終わっていないということです。

次に、慣例により、作成したような単純な C++ プログラムは、次のコード レイアウトに従う必要があります。

  1. プログラム内容
  2. 関数プロトタイプ
  3. 主な機能
  4. 関数定義

関数定義を開始する前にメイン関数を終了する必要があることを除いて、プログラムの順序は正しいです。

したがって、次のものが必要です。

main()
{
  ...
}//End main function

void menu()
{
  ...
}

私が気付いたもう 1 つのことは、コマンド ラインから入力を取得する場合、通常、メイン関数に指定したパラメーターが使用されることです。プログラムでユーザーからの入力を求めているため、メイン関数の宣言方法を変更する必要があります。

使用する代わりに

int main(int argc, const char * argv[])
{
  ...
}

このように宣言します

int main()
{
  ...
}

最後の質問に答える前に、ユーザー入力を処理する機能を構築する必要があります。これは、switch case ステートメントで実行できます。C++ での switch case ステートメントの使用に関する情報が必要な場合は、http: //www.cplusplus.com/doc/tutorial/control/ で優れた説明を見つけることができます。

この switch ステートメントを実装する 1 つの方法は、switch ケースで直線の傾きと長さを計算する関数を呼び出すことです。この方法で行う場合、メニュー機能のパラメーターについて 1 つのことを変更する必要があります。メニュー関数にも座標の値を渡す必要があります。例えば、

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

}

それはあなたのすべての質問に答えると思います。お役に立てれば!

于 2013-05-31T01:31:28.580 に答える
0

関数名の最後にセミコロンがあります

于 2013-05-31T00:50:46.353 に答える