1

検討:

    struct Package_Node
    {
        int bar_code;
        float package_weight;
        struct Package_Node *next_packaged;
    };

    struct Key_Node
    {
        int key;
        struct Package_Node *next_package;
    };

    int weightTemp = 0, barcodeTemp = 0, keyTemp = 0, N = 0, X = 0, max_value = 0, optionChosen = 0, optionChosenTwo = 0;
    float tempWeight;

    int main()
    {
        srand(time(NULL));
        do
        {
            cout << "1 - Enter Number of keys and the Max Value\n2 - Enter Number of Packages (N)\n";
            cout << "3 - Create Array of Keys\n4 - Organize Packages\n5 - Table Stats\n6 - Clean Table\n7 - Exit\n\n";
            cin >> optionChosen;

            switch(optionChosen)
            {
                case 1:
                {
                    cout << "\nEnter Number of Keys:";
                    cin >>X;
                    cout <<"\nEnter Max Value of the Barcode: ";
                    cin >>max_value;
                    break;
                }

                case 2:
                {
                    cout << "\nEnter Number of Packages: ";
                    cin >> N;
                    //keyTemp=
                    break;
                }

                case 3:
                {
                    Key_Node keyMain[X];
                    for(int i=0;i<X;i++)
                    {
                        keyMain[i].key=i;
                        //cout << keyMain[i].key; //to see key values.
                    }
                    break;
                }

                case 4:
                {
                    Package_Node totalPackages[N];
                    for(int i=0;i<N;i++)
                    {
                        barcodeTemp = rand() % max_value + 1;
                        keyTemp = barcodeTemp % X;
                        tempWeight = rand() % 500 + 1;
                        totalPackages[i].bar_code=barcodeTemp;
                        totalPackages[i].package_weight=tempWeight;

                    }
                    for(int i=0;i<N;i++)
                    {
                        cout << totalPackages[i].bar_code <<endl;
                        cout << totalPackages[i].package_weight << endl;
                    }

これは私のコードです。合計パッケージ[i](動的配列)の情報を入れて、(Package_Nodeデータ型と静的配列の)keyMainにリンクしようとしています。しかし、私はここでその方法を完全に失いました。

また、動的配列「totalPackages」の宣言は正しいですか? または、ユーザーが入力したパッケージの総数に応じてサイズが大きくなるため、サイズを宣言しないでください。totalPackagesプログラムが望むように成長するリンクされたリストであると想定されています。

4

1 に答える 1

0

C++ では、中かっこの間で宣言された変数{}はローカルです。中かっこの外でコードを実行すると、変数は「存在しなくなります」。

コードは次のようになります。

        case 3:
        {
            Key_Node keyMain[X];
        }
        case 4:
        {
            Package_Node totalPackages[N];
        }

コード アクセスの一部を別の部分で宣言することはできません。修正するには、メイン関数の開始時にものを宣言します。

int main()
{
    Key_Node keyMain[X];
    Package_Node totalPackages[N];
    ...
}

ユーザーが値Xとを提供する前に宣言が行われるため、宣言は不適切Nです。std::vectorこれを修正するには、配列を次のように置き換えます。

int main()
{
    std::vector<Key_Node> keyMain;
    std::vector<Package_Node> totalPackages;
    ...
}

std::vector ドキュメント、特にpush_backおよび)を参照して作業を学習する必要がありますsize。さらに、 のドキュメントを参照してくださいstd::list。それもあなたを助けるかもしれません。

于 2013-03-03T19:45:24.967 に答える