
使用了指针和结构体,结构体的嵌套
如图,光标处应该怎样输入能正常运行
关注引自免费微信小程序:皆我百晓生
在你提供的代码段中,你已经定义了两个结构体Machin和Linjian,以及一个全局结构体System。然而,在InputNode函数中,你只完成了机器名和机器总数量的输入,但在输入材料名称之前,程序流被截断了。为了完成材料的输入,你需要在InputNode函数中添加循环来处理Linjian数组的输入。
下面是如何修改InputNode函数以完成材料输入的示例代码:
#include <iostream>
#include <string.h>
using namespace std;
struct Linjian {
/* 材料结构 */
char cliaoname[100]; /* 机器所用材料 */
int sum; /* 材料数量 */
};
struct Machin {
/* 机器结构 */
int MachinNumber; /* 对应机器编号 */
char name[150]; /* 机器名称 */
Linjian linjians[100]; /* 机器所用材料 */
int Num; /* 可出库的机器总数 */
int AllNum; /* 机器总数 */
};
struct System{
Machin Machins[50];
};
struct Machin *InputNode(){
struct Machin *p = NULL;
int i, num_of_materials; /* 新增变量用于存储材料数量 */
p=(struct Machin *)malloc(sizeof(struct Machin));
if (p == NULL) {
cout << "Memory allocation failed.\n";
return NULL;
}
cout << "请输入机器名: ";
cin >> p->name;
cout << "请输入机器库存: ";
cin >> p->AllNum;
cout << "请输入该机器使用的材料数量: ";
cin >> num_of_materials;
for(i = 0; i < num_of_materials; i++) {
cout << "请输入第" << i+1 << "种材料的名称: ";
cin >> p->linjians[i].cliaoname;
cout << "请输入第" << i+1 << "种材料的数量: ";
cin >> p->linjians[i].sum;
}
return p;
}
这个修改后的InputNode函数首先询问用户机器使用的材料数量,然后通过一个循环来获取每种材料的名称和数量。注意,这里也添加了内存分配失败时的错误检查,以确保程序的健壮性。
此外,你可能还需要在主函数或其他地方调用InputNode函数,并根据需要处理返回的Machin结构体指针。例如:
int main() {
struct Machin *machine = InputNode();
// 进行后续操作...
}
这样,你就可以完成整个机器材料的输入过程了。