考虑:
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](动态数组)的信息和链接到keyMain(Package_Node数据类型和静态数组)。但我完全迷失在这里怎么做。
另外,我的动态数组“totalPackages”的声明是否正确?或者我不应该声明它的大小,因为这将根据用户输入的包的总数增长? totalPackages
应该是一个随着程序的需要而增长的链表。
答案 0 :(得分:0)
在C ++中,花括号{}
之间声明的变量是本地的:当在大括号外运行代码时,它们“停止存在”。
您的代码如下所示:
case 3:
{
Key_Node keyMain[X];
}
case 4:
{
Package_Node totalPackages[N];
}
在另一方中声明代码访问内容的一部分是不可能的。要修复,请在main函数的开头声明东西:
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
see the documentation,尤其是push_back
和size
。另外,请查看std::list
的文档;它也可能对你有帮助。