• homework-06


    首先贴出智能指针的作业

    1. 了解Lambda的用法

    计算“Hello World!”中

    a.字母‘e’的个数
    b. 字母‘l’的个数
    void main(){
        char c[] = "Hello World";
        int e = 0;
        [&]()
        {
            int i = 0;
            while (i < 11)
            {
                if (c[i++] == 'e')
                    e++;
            }
        }();
        printf("e:%d
    ", e);
        int l = 0;
        [&]()
        {
            int i = 0;
            while (i < 11)
            {
                if (c[i++] == 'l')
                    l++;
            }
            return l;
        }();
        printf("l:%d
    ", l);
        system("pause");
    }

    2. 练习使用智能指针

      打印“Hello World!”循环右移n位的结果

      Example:

        n = 1, output = “!Hello World”

      n = 3, output = “ld!Hello Wor”

    void main(){
        int n;
        cin >> n;
        auto sp1 = std::make_shared<string>("Hello World!");
        auto sp2 = std::make_shared<string>("Hello World!");
        int i = 0;
        int i2;
        while (i < 12)
        {
            i2=(i + n) % 12;
            (*sp2)[i2] = (*sp1)[i++];
        }
        sp1.reset();
        cout << *sp2;
        system("pause");
    
    }

    然后是作业06

    1) 把程序编译通过, 跑起来。

        读懂程序,在你觉得比较难懂的地方加上一些注释,这样大家就能比较容易地了解这些程序在干什么。

         把正确的 playPrev(GoMove) 的方法给实现了。 如果大家不会下围棋,那就需要大家实地或者上网练习一下围棋的死活,提子是怎么回事。这个应该一个小时就能搞定。

    注释放在github的代码中,请自行查看。主要的方法是要看研究明白原来是如何存储的,从doDeadGroup中我们能知道新的下棋操作会带来的新情况,当前的棋子颜色,次序等等都要改变。然后如果有吃子的现象就会生成一个数组来储存吃掉的子的信息,这样当我们写playPrev时只需要把这些信息搞懂,然后重新写入棋盘,并把当前的一些状态值设成上一步的即可。

    2)根据你选择的教材 (三本之一或更多),点评一下这个程序设计方面的不足,例如:

         编码风格,

         程序架构,有哪些不符合良好的设计,这个程序的设计模式 (MVC等) 是高端大气国际化的么? 等等。 

         程序的错误处理,文件处理,UI 等等

    我对这个程序的理解就是,有非常多的没用的参数和没用的代码没有注释掉只是在那里放着,这样会非常影响阅读,倒是很多东西摸不到头绪,浪费了很多时间。所有的处理都放到几个大类中,比如操作,棋子,棋谱等东西分开写会更有利与维护。在读取文件的时候也咩有考虑得很周全,try-catch的格式从来没使用或,程序的安全性很低。

  • 相关阅读:
    idea快捷键操作
    2018/2/17 SpringCloud的一个简单小介绍
    2018/2/16 解析Logback的AppenderBase源码,并举一反三的实现Logback扩展功能的思路,以及它的实际业务应用场景
    2018/2/15 ES Beats的学习笔记
    2018/2/14 x-pack的学习
    2018/2/14 自己实现ArrayList,LinkedList和Iterator,以及在此过程中对于面向对象,面向接口,还有抽象类的一些思考感悟
    2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询
    2018/2/11 ELK技术栈之ElasticSearch学习笔记二
    2018/2/5 ELK技术栈之ElasticSearch学习笔记
    2018/1/28 RocketMq学习笔记
  • 原文地址:https://www.cnblogs.com/jazzone/p/3441132.html
Copyright © 2020-2023  润新知