酷代码 AI
菜单
全部AI  /  AI写代码神器
服务商

cpp编写一个程序实现大学的数据统计。某大学的组织结构如下表所 示,该数据存放在文本文件 txt 中. 表1某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能:1.从 txt 文件读数据到 r 数组中。 2.由数组 r 创建树 t 的链式存储结构. 3.采用括号表示输出树 t . 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数

创建一个实现大学数据统计的 C++ 程序,需要采用树的链式存储结构来存储该信息。以下是一个简单的示例代码,展示了如何从文本文件中读取数据、构建树、输出树结构,以及统计专业、班级和学生人数的功能。对于修改指定信息点的功能,本示例将给出一个基本框架,具体的实现可根据需求进一步补充。 代码实现 ```cpp #include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector> #include <memory> using namespace std; struct Node { string name; // 单位或班级名称 int studentCount; // 人数 vector<shared_ptr<Node>> children; // 孩子节点 Node(string name, int count = 0) : name(name), studentCount(count) {} }; class University { private: shared_ptr<Node> root; public: University() { root = make_shared<Node>("某大学"); } void addNode(const string& path, int count) { // 通过路径找到父节点,并插入新的节点 // 可以使用递归或迭代来实现 auto currentNode = root; vector<string> parts; istringstream iss(path); string part; while (getline(iss, part, '/')) { parts.push_back(part); } for (const auto& p : parts) { auto it = find_if(currentNode->children.begin(), currentNode->children.end(), [&](const shared_ptr<Node>& child) { return child->name == p; }); if (it == currentNode->children.end()) { shared_ptr<Node> newNode = make_shared<Node>(p, 0); currentNode->children.push_back(newNode); currentNode = newNode; // 继续向下 } else { currentNode = *it; // 找到节点,继续向下 } } currentNode->studentCount = count; // 设置人数 } void display(shared_ptr<Node> node, int depth = 0) { cout << string(depth, ' ') << node->name << (node->studentCount > 0 ? " (" + to_string(node->studentCount) + ")" : "") << endl; for (const auto& child : node->children) { display(child, depth + 2); } } void display() { display(root); } // 示例功能: 统计各学院的专业数及名称 void countMajors(shared_ptr<Node> node) { for (const auto& child : node->children) { if (child->studentCount == 0) { // Assuming major nodes have 0 students cout << "专业名称: " << child->name << endl; } countMajors(child); // 递归查找 } } void countClasses(shared_ptr<Node> node) { // 类似于上面的实现 for (const auto& child : node->children) { if (child->studentCount > 0) { // Assuming class nodes have students cout << "班级名称: " << child->name << ", 人数: " << child->studentCount << endl; } countClasses(child); // 递归查找 } } void readDataFromFile(const string& filename) { ifstream file(filename); string line; while (getline(file, line)) { stringstream ss(line); string path; int count; ss >> path >> count; // 这里假设路径和人数是以空格分隔 addNode(path, count); } } // 修改指定的信息点 void modifyNode(const string& path, int newCount) { // 实现路径找到节点并修改人数 // ... } // 边界函数入口 void start(const string& filename) { readDataFromFile(filename); display(); countMajors(root); countClasses(root); } }; int main() { University university; university.start("data.txt"); // 从文本文件中读取数据 return 0; } ``` 输入文件 `data.txt` 示例 ``` 某大学/计算机学院/物联网 0 某大学/计算机学院/计算机科学 0 某大学/电信学院/电子信息类 0 某大学/计算机学院/信息安全 0 某大学/电信学院/信息工程 0 某大学/计算机学院/物联网/物联班 40 某大学/电信学院/电信1班 38 ``` 说明 1. 树的结构设计:使用 `Node` 结构体表示每个节点,记录名称、学生数及子节点。`University` 类用于管理整个树。 2. 添加节点:通过给定的路径串添加新节点,路径用斜杠(`/`)分隔。 3. 显示树:可以递归地显示树结构。 4. 统计专业和班级数量:通过递归扫描树结构实现。 5. 从文件读取数据:模拟从文件中读取路径和学生人数。 6. 修改节点功能:提供了修改信息点的框架,具体实现可进一步补充。 在完成该程序时,请根据实际需求对功能进行细化和扩展。 [2024-10-27 01:08:11 | AI写代码神器 | 2914点数解答]

热门AI查看更多
“AI写代码神器”擅长各种语言编程、解释代码、注解补充。 在这里填写你的问题。如:写出java冒泡排序算法。
一个入口掌握所有。 在这输入任何问题,或者要AI输出的内容。
将阿拉伯数字转为人明币大写,如:数字1000转换为壹仟。
AI生成爆文标题,能够快速创作出极具吸引力的标题,促使短视频、自媒体文章的点击率与阅读量迅猛攀升。 此处填写一个原始标题,如:一般人怎样打理自身的社交圈?
AI生成新闻评论。 在这里填入新闻内容。
AI生成内容摘要。 在此处填入需要生成摘要的内容,还可以输入4000字。
AI生成主持词,擅长团建、年会、婚礼、节日等场合的主持词编写。 在这里填入主持场景,如:运动会
AI快速生成周报、月报、日报、年终总结等各类总结报告。 在这里简单输入工作目标、指标、成果,没有任何格式或特殊需求。如:计划年销售业绩1000万,实际完成800万。
输入一个字,显示以这个字开头的歇后语
输入一个字,显示以这个字开头的成语
极速在线生成证件照
极速更换证件照红、蓝、白底色
实用工具查看更多
阿里云99元2核2G服务器/年,199元2核4G服务器随心买。
今日油价 [生活类]
全国各省油价,实时更新。
图片互转base64 [开发类]
将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。
时间转换器 [开发类]
时间戳转换器,时间、毫秒、秒、倒计时查看
录入名字、电话、邮箱、个人介绍信息,生成二维码,可通过此码扫码添加微信联系人
数独游戏 [娱乐类]
数独(Sudoku)是经典的9x9数字逻辑谜题。在有81个小格的九宫格内,玩家依据初始数字推理填入1 - 9的数字,要保证每行、每列以及每个3x3宫格中的数字都不重复。这款在线数独游戏有多难度可选,没有头绪时,可以点开答案看一下哦^_^
经典推箱子 [娱乐类]
基于H5的经典推箱子小游戏,锻炼玩家的眼力和反应力,非常不错
AI摸鱼五子棋 [娱乐类]
基于H5的五子棋人机对练,锻炼玩家的眼力和反应力,非常不错
相关提问