-4

これはこのウェブサイトでの私の最初の質問です..私の友人に言及すると、彼はここから多くのことを学びます;)、今度は私の番だと思います.. :)

親愛なるメンバーの皆様..この時点で、私は完全に緊張しており、コードを機能させるにはどうすればよいかを知るのに非常にイライラしています..!! さて、私はC++の基本的な知識を持つ学生です.今学期はオブジェクト指向プログラミングに取り組んでいます..このタスクは、クラス(プライベートとパブリック)の概念を明確にするために行われています.キーなど

動的メモリを使用する場合、コンストラクター、デストラクタなどを作成する必要があることはわかっていますが、それに戸惑っています..パラメーターの問題、またはコンストラクターのコピー、深いコピー、浅いコピーだと思います。どうすればいいのかわからない!!!ええと、私はプロではありません....それで申し訳ありません。!!

誰かが配列、クラス内のポインターに関するほとんどの例を使用してコードを案内してくれたら、どうすれば処理できますか。. . :( :( ありがとうございます。

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

#include <iostream>

using namespace std;

class IntArray
{
private:

    int size;
    int *values;

public:

    void InputData() const;
    void OutputData() const;
    void Search() const;
    void Bubble() const;
    IntArray(int size)
    {
        values = new int[size];
    }
};

void IntArray::InputData()  const
{
        cout << "==> Entering Data <==" << endl;

        for (int i = 0; i < size; ++i)
        {
        cout << ">> Enter Element #" << i+1 << ": ";
        cin >> values[i];
        }
}

void IntArray::OutputData() const
{
    cout << "==> Printing Data <==" << endl;
    for (int i = 0; i < size; ++i)
    {
        cout << values[i] << " ,";
    }
    cout << "\n";
}
void IntArray::Search() const
{
    int key;
    cout << "Please Enter A KEY To Find: ";
    cin >> key;
    int index = 0;
    bool found = false;
    for (int i = 0; i < size; ++i)
    {
        if ((!found) && (key == values[i]))
        {
            index = i;
            found = true;
        }
    }
    if (found)
    {
        cout << "KEY Found At The Index: " << index+1 << endl;
    }
    else
    {
        cout << "KEY is not present." << endl;
    }
    cout << '\n' << endl;
}

void IntArray::Bubble() const
{
    for (int i = 1; i < size; ++i)
    {
        for (int j = 0; j < size; ++j)
        {

            if (values[j] > values[i])
            {
                int temp = values[j];
                values[j] = values[i];
                values[i] = temp;
            }
        }
    }
}

int main()
{
    const int size = 5;
    IntArray u(size);
    u.InputData();
    u.OutputData();
    u.Search();
    u.Bubble();
    system("pause");
    return 0;
}
4

2 に答える 2

0

あなたの質問と回答のコメントから私が理解できる限り、あなたは非常に悪い状況にあります: あなたのインストラクターは間違ったツールを使って仕事をしています (彼がこのサイトも読んだら面白いでしょう)。

OOP 以外の純粋な言語 (C++ など) を使用して OOP を教えているため、Java のように教えているため、混乱が生じます。

したがって、動的メモリを間違った方法で管理することになります (ctor には new[] がありますが、dtor がないため、delete[] もコピーも割り当てもありません。したがって、動的データの共有と二重削除の可能性があります)。パラメータ付き(静的メモリ(?!?)関数に関して)、基本的な標準クラス(std::vectorなど)について一度も話したことがないが、動的に割り当てられた配列を使用するふりをするインストラクターと一緒に...

なんて言うか?それは難しい、非常に難しいです。

私の提案は、しばらく立ち止まって、より「産業用 C++」ベースのチュートリアルを読んでみることです。(これは本当に便利です!しかし、ページごとにフォローしてください!)

于 2013-04-30T19:18:59.660 に答える