-2

さて、ペンタゴン プロジェクトを作成する必要がありますが、ここで少し混乱しています。つまり、うまく機能しますが、コードが必要なクラスが1つありません。

割り当ては次のとおりです。

プログラムを書き、それを PentagonProject と呼びます。main() 関数を含むファイルのほかに。他に 2 つのクラスがあり、それぞれ独自のファイルのペア (.h; .cpp) に含まれています。クラスの 1 つはクラス MenuClass で、もう 1 つは Pentagon という名前にする必要があります。main() には、MenuClass メンバー関数 DisplayMenu などを呼び出すユーザー ループが必要です。このメニューでは、オブジェクトとも呼ばれる Pentagon クラスのインスタンスのサイズをユーザーが指定および変更できるようにする必要があります。五角形は正則 (すべての面が同じ) でなければなりません。五角形には 5 つの面があります。辺の長さをsとする。このとき、五角形の周囲の長さ P と面積 A は次のようになります。

方程式:

P = 5s 

A = s^2 sqrt ( of 25 + 10 sqrt (5) ) / (over) 4

このメニューでは、ユーザーがペンタゴン クラスのインスタンスの周長と面積を計算できるようにする必要があります。プログラムには単一のペンタゴン オブジェクトが必要です。


つまり、プログラムはうまく機能しますが、Pentagon Class で正確に何をどのようにコーディングすればよいかがわかりませんでした。

私のペンタゴンプロジェクト(またはメイン):

// PentagonProject.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "MenuClass.h"

using namespace std;

int main()
{
    Menu menu;
    do
    {
        menu.Display();
        menu.QueryUser();
        menu.ProcessCommand();
    }
    while(menu.Continue());
    return 0;
}

これは私のMenuClassがどのように見えるかです:

//  ==================
#include "StdAfx.h"
#include <string>
#include <iostream>
//  ==================

//  ================
//  Class Inclusions
//  ================
#include "MenuClass.h"
#include "Math.h"
//  ================

//  ====================
using namespace std;
//  ====================

//  ============
//  Constructors
//  ============

//      ===================
//      Default Constructor
//      ====================
Menu::Menu(void)
{
    userMenuSelection = Quit;
} // Constructor Menu
//      =====================

Menu::~Menu(void)
{
    cout << "====================================" << endl;
} // Destructor ~Menu
//      =====================

//      ==============================
//      Accessor Member-Function Get()
//      ==========================
MenuChoices Menu::Get()
{
    return userMenuSelection;
} // Accessor Method Get
//      ========================

//      =============================
//      Mutator Member-Function Set()
//      ========================================
void Menu::Set(MenuChoices newValue)
{
    userMenuSelection = newValue;
} // Mutator Method Set
//      =======================

//      ==========================
//      Member-Function Display( )
//      ==========================
void Menu::Display()
{
    cout << "======================================" << endl;
    cout << "             MENU SELECTION           " << endl;
    cout << "======================================" << endl;
    cout << "1: Calculate the Perimeter of Pentagon" << endl;
    cout << "2: Calculate the Area of Pentagon" << endl;
    cout << "3: Quit" << endl;
    cout << "======================================" << endl;
    cout << endl;
} // Member-Function Display
//      ============================

//      =========================
//      Member-Function QueryUser
//      =========================
void Menu::QueryUser()
{
    int selection;
    cout << "Enter Menu Selection: ";
    cin >> selection;
    switch(selection)
    {
    case 1:
        userMenuSelection = Perimeter;
        break;
    case 2:
        userMenuSelection = Area;
        break;
    case 3:
        userMenuSelection = Quit;
    default:
        userMenuSelection = Quit;
    } // switch
    //          ===========
    cout << endl;
} // Method QueryUser()
//      =======================

//      =================
//      Method Continue()
//      ========================
bool Menu::Continue()
{
    return userMenuSelection != Quit;
} // Method Continue
//      ====================

//      ==============================
//      Member-Function ProcessCommand
//      ==============================
void Menu::ProcessCommand()
{
    int numberA; // Length of Sides
    double area; // Area
    if(userMenuSelection == Quit)
    {
        cout << "Thank you for using this type of program. Have a nice day!" << endl;
    }
    else if(userMenuSelection != Quit)
    {
        cout << "Please enter an integer value for the length of the sides: ";
        cin >> numberA;
        //              ==============================
        switch(userMenuSelection)
        {
        case Perimeter:
            cout << "Perimeter = " << (5 * numberA) << endl;
            break;
        case Area:
            cout << "Area = " << numberA * numberA * sqrt(25.0 + 10.0 * sqrt(5.0)) / 4.0;
            break;
        default:
            cout << "Warning: error state encountered." << endl;
        }
        cout << endl;
    }
}

// ========================

では、ペンタゴンクラスなしでプログラムが動作することをどのように確認できますか..私の質問は、このプロジェクトを一度に両方のクラスで動作させるにはどうすればよいかということです

4

1 に答える 1

1

関数内で計算を行うべきではありませんProcessCommand()

むしろ、五角形オブジェクト (以下のスケルトン コード) を作成し、それらを使用します。表示関数を使用できない場合に値にアクセスするなど、正確なニーズに合わせてこれを変更する必要がある場合があります。

もつ:

class Pentagon {
private:
    int side;
    int area;
    int perimeter;

public:
    Pentagon() { side = area = perimeter = 0; }
    Pentagon(int a) { side = a; Area(); Perimeter(); }

    void Side(int s) { side = s; Area(); Perimeter(); }

    void Area() {
        //Impement
        area = 0;
        std::cout << "I Should implement area based on side of " << side << std::endl;
    }

    void Perimeter() {
        //Implement
        perimeter = 0;
        std::cout << "I Should implement perimeter based on side of " << side << std::endl;
    }

    void Display() {
        //Handle output
        std::cout << "A pentagon of side " << side << " has area " << area << " and perimeter " << perimeter << std::endl;
    }

    int GetPerimeter() {
        return perimeter;
    }
};

それらを使用するには、次のようにすることができます。

int main() {


    Pentagon p;

    int t = 5; //Simulating input

    p.Side(t); //Just use this with all input.  

    p.Display(); //If you want some generic display all function
    //or create and use accessors
    std::cout << p.GetPerimeter() << std::endl;


}
于 2013-10-23T00:15:15.553 に答える