2018北邮计算机机试B---vector的嵌套

该代码示例展示了如何用C++将输入的数字字符串转化为5x3的点阵表示,通过初始化全1矩阵并根据数字修改对应位置的值来完成转换。程序处理了0-9的数字转换,并将每个数字的点阵存储在三维向量中,最后输出点阵。
摘要由CSDN通过智能技术生成

题目描述

用5*3的点阵,表示数字

样例输入

618

样例输出

111 010 111
100 110 101
111 010 111
101 010 101
111 111 111

Key Points:

输入的数字是变长的-->用vector

vector<int> hang; 存储一个数字的一行

vector<vector<int> > matrix; 存储一个数字的每一行

vector<vector<vector<int> > > end; 存储每个数字的方阵

end[i][j][k] --> 第i个数字第j行的第k个数字

代码

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s="";
    cin>>s;
    vector<vector<vector<int> > > end;
    vector<vector<int> > matrix;
    vector<int> hang;
    for(int i=0; i<s.size(); i++) {
        //1 矩阵初始化,全为1
        matrix.clear();
        for(int a=0; a<5; a++) {
            hang.clear();
            for(int b=0; b<3; b++) {
                hang.push_back(1);
            }
            matrix.push_back(hang);
        }
        //2 识别数字
        int num=s[i]-'0';
        //3 转换矩阵
        if(num==0) {
            matrix[1][1]=0;
            matrix[2][1]=0;
            matrix[3][1]=0;
        } else if(num==1) {
            matrix[0][0]=0;
            matrix[2][0]=0;
            matrix[3][0]=0;
            matrix[0][2]=0;
            matrix[1][2]=0;
            matrix[2][2]=0;
            matrix[3][2]=0;
        } else if(num==2) {
            matrix[1][0]=0;
            matrix[1][1]=0;
            matrix[3][1]=0;
            matrix[3][2]=0;
        } else if(num==3) {
            matrix[1][0]=0;
            matrix[1][1]=0;
            matrix[3][0]=0;
            matrix[3][1]=0;
        } else if(num==4) {
            matrix[0][1]=0;
            matrix[1][1]=0;
            matrix[3][0]=0;
            matrix[3][1]=0;
            matrix[4][0]=0;
            matrix[4][1]=0;
        } else if(num==5) {
            matrix[1][2]=0;
            matrix[1][1]=0;
            matrix[3][0]=0;
            matrix[3][1]=0;
        } else if(num==6) {
            matrix[1][2]=0;
            matrix[1][1]=0;
            matrix[3][1]=0;
        } else if(num==7) {
            matrix[1][1]=0;
            matrix[2][0]=0;
            matrix[2][1]=0;
            matrix[3][0]=0;
            matrix[3][1]=0;
            matrix[4][0]=0;
            matrix[4][1]=0;
        } else if(num==8) {
            matrix[1][1]=0;
            matrix[3][1]=0;
        } else if(num==9) {
            matrix[1][1]=0;
            matrix[3][1]=0;
            matrix[3][0]=0;
        }
        end.push_back(matrix);
    }
    //4 输出
    for(int i=0; i<5; i++) {//5行
        for(int j=0; j<end.size(); j++) {//输入数字的个数
            for(int k=0; k<3; k++) {//3列
                cout<<end[j][i][k];
/*
                把输出方阵中的0 换成空格
                if(end[j][i][k]==0) cout<<" ";
                else cout<<end[j][i][k];

*/
            }
            cout<<" ";
        }
        cout<<endl;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值