2301_79712304 2024-06-17 20:15 采纳率: 88.9%
浏览 1
已结题

光标处应该输入什么可以完成机器材料的输入

img


使用了指针和结构体,结构体的嵌套
如图,光标处应该怎样输入能正常运行

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-17 20:15
    关注

    引自免费微信小程序:皆我百晓生

    在你提供的代码段中,你已经定义了两个结构体MachinLinjian,以及一个全局结构体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();
        // 进行后续操作...
    }
    

    这样,你就可以完成整个机器材料的输入过程了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月17日