C++实战项目:分配班级(多维数组遍历)

1、项目需求:

学校有两个专业,每个专业有两个班级,每个班级有五个座位
 1、专业一:物理;专业二:计算机
 2、两个班级:1班,2班
 3、五个座位:1号,2号……5号
 准备三维数组,将每一个学生安排到没一个作为上
 并遍历数组,输出每个专业、每个班。每个座位分配的学生姓名
 

2、代码实现

#include "iostream"
#include "random"
using namespace std;

/*
 * 项目需求:
 * 学校有两个专业,每个专业有两个班级,每个班级有五个座位
 * 1、专业一:物理;专业二:计算机
 * 2、两个班级:1班,2班
 * 3、五个座位:1号,2号……5号
 * 准备三维数组,将每一个学生安排到没一个作为上
 * 并遍历数组,输出每个专业、每个班。每个座位分配的学生姓名
 */

int get_random_num12(int min,int max) {
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    //定义一个均匀分布的整数范围
    uniform_int_distribution<>dis(min,max);

    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}

int main() {
    //姓名数组
    string names[] = {"weiliang","baobao","lele","jiejie","xiaoyu","tantan","le","dlks","kdjf","jdskl",
        "jdslkjf","df","oi","dsf","rwer","kei","xiaozhang","xcv","deg","ert",
        "fdsf","cv","er","qer","wer","wer","waret","gsrhr","grgrg","grgrge",
        "rgerg","dfsf","dsff","rgrg","ngh","rgfhgh","sfgwwg","frwgr","ioip","qeer",
        "slfjsl","dsfs","dsllo","dskflksd","sdjf","wreer","wmnk","werrn","qwem","qwert"};

    //生成2*2*5的随机数组
    string arr[2][2][5];

    for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++) {        //动态计算数组的长度
        for (int j=0;j<sizeof(arr[0])/sizeof(arr[0][0]);j++) {
            for (int k=0;k<sizeof(arr[0][0])/sizeof(arr[0][0][0]);k++) {
                string major = i==0 ? "物理":"计算机";
                string class_name = j==0 ? "1班":"2班";
                int seat_number = k + 1;
                string name = names[get_random_num12(0,sizeof(names)/sizeof(names[0])-1)];

                string msg = major + "专业" + class_name + "座位号为:" + to_string(seat_number) + "的同学叫" + name;
                arr[i][j][k] = msg;
            }
        }
    }
    cout << "信息准备完成,现在开始输出" <<endl;
    for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++) {
        for (int j=0;j<sizeof(arr[0])/sizeof(arr[0][0]);j++) {
            for (int k=0;k<sizeof(arr[0][0])/sizeof(arr[0][0][0]);k++) {
                cout << arr[i][j][k] <<endl;
            }
        }
    }
    return 0 ;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值