zoukankan      html  css  js  c++  java
  • 个人项目作业

    一、概述

    项目 内容
    这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
    这个作业的要求在哪里 作业要求
    班级 006
    项目地址 https://github.com/c2170/personal_program

    ## 二、PSP 表格
    Psp2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划
    · Estimate · 估计这个任务需要多少时间 10 5
    Development 开发
    · Analysis · 需求分析 (包括学习新技术) 30 40
    · Design Spec · 生成设计文档 15 10
    · Design Review · 设计复审 (和同事审核设计文档) 10 5
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 15
    · Design · 具体设计 30 20
    · Coding · 具体编码 100 120
    · Code Review · 代码复审 20 20
    · Test · 测试(自我测试,修改代码,提交修改) 100 200
    Reporting 报告
    · Test Report · 测试报告 30 20
    · Size Measurement · 计算工作量 15 10
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 15 15
    合计 390 480

    ## 三、解题思路

    思考过程

    对于这道题目,我的想法比较直接,就是两两求交点,用一个集合来存这些交点。每次求出交点后就和已经在集合中的点比较,判断是否有重合,如果无重合,则总数加一。

    资料查找

    关于如何根据两点坐标求出直线方程,和根据两条直线方程求交点,我查找了一些资料。


    ## 四、设计实现过程

    代码组织

    关于数据的表示,我设计了两个结构体分别来表示直线和交点。

    我设计了两个主要函数:1.判断两条直线是否平行;2.求两条直线的交点。这两个函数的传入参数都是两个表示直线的结构体。

    单元测试

    我的代码中只有一个有返回值函数,所以对这个函数进行单元测试。编写测试代码如下:

    测试结果:


    ## 五、性能分析

    用N=500的数据进行性能分析,大约用时20分钟。

    CPU使用率

    函数calculate用来计算两条直线的交点,它占据了90%以上的CPU使用率。我使用了set来存交点,并且用lower_bound()来判断是否存在重合的点。一开始我就选择了使用容器本身的lower_bound(),这样效率会比较高。

    内存使用率

    如图所示,内存使用正常。


    ## 六、代码说明

    定义Line结构体表示由两点(x1,y1)和(x2,y2)所确定的直线Ax+By+C=0。

    定义Point结构体表示两条直线的交点坐标(x,y)。

    isParallel()函数的功能是判断两条直线是否平行,若平行则返回1,不平行返回0。

    在calculate()函数中,首先判断两条直线是否平行,若不平行,则计算出交点坐标,并判断该交点是否与已经存在的交点重合,若不重合,则加入集合中。

    如图所示,已经消除所有警告。

  • 相关阅读:
    NDK开发之ndk-build命令详解
    NDK开发之Application.mk文件详解
    Unity3D自己常用代码
    投资股权众筹项目,至少需要关注6个方面
    2015,我的投资理财策略(股权众筹+P2P网贷+活期理财)
    2015,我的投资理财策略(股权众筹+P2P网贷+活期理财)
    关于weight属性使用的一些细节
    xtu summer individual 5 F
    BNUOJ 1268 PIGS
    BNUOJ 2105 Distance Queries
  • 原文地址:https://www.cnblogs.com/sugarorange/p/12454983.html
Copyright © 2011-2022 走看看