课后作业2

1.在文章开头写出自己目前写过的代码量以及自己的码云项目地址

答:码云项目地址:https://gitee.com/sybrjsjrg_br_jsj_rg/personal_project41634.git  我的代码量大概几千行

2.PSP表格:

3.解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。

答:先思考用什么软件写,然后思考怎么写,在百度找资料。

4. 设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?

答:不需要画流程图,单元测试所有的运算是否正确.

5. 记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。

答:消耗最大的函数include()

6. 代码说明。展示出项目关键代码,并解释思路与注释说明。

答:

// liyanru.cpp : Defines the entry point for the console application.

//

 

#include "stdafx.h"

#include <string>

#include <iostream>

#include <tchar.h>

using namespace std ; 

// 计算2个操作数 加减 的结果。

float Calculate( float Operand1 , float Operand2 , char Operator )

{

       float Ret = 0 ;

       if ( Operator == '+' )

{

              Ret = Operand1 + Operand2 ;

       }

       else if ( Operator == '-' )

       {

              Ret = Operand1 - Operand2 ;

       }

      

       return Ret ;

}

// 计算 加减,不带括号的表达式

float EvaluateExpression( const string& str )

{

       float Operand1 = 0 ;    // 操作符左边的操作数

       float Operand2 = 0 ;    // 操作符右边的操作数

       char Operator = 0 ;            // 操作符

      

       for ( size_t i = 0 , size = str.size( ) ; i < size ; ++i )

       {

              const char& ch = str[ i ] ;

             

              if ( '0' <= ch && ch <= '9' )

              {

                     if ( Operator == 0 )

                     {      // 操作符为空时,表示正在解析操作符左操作数

                            Operand1 = Operand1 * 10 + ch - '0' ;

                     }

                     else

                     {      // 操作符不为空,表示正在解析操作符右边的操作数

                            Operand2 = Operand2 * 10 + ch - '0' ;

                     }

                    

              }

              else if ( ch == '+' || ch == '-' )

              {

                     if ( Operator == 0 )

                     {      // 如果操作符为空,先保存操作符,当遇到下一个操作符时,才进行计算。

                            Operator = ch ;

                     }

Operator = ch ;

                     }

                     else

                     {      // 如果之前存在了操作符,当前遇到第二个操作符,意味着先计算之前的 加减。

                            Operand1 = Calculate( Operand1 , Operand2 , Operator ) ; // 操作数1 和 操作数2 进行计算

                            Operand2 = 0 ;    // 操作数2 置为空,为了保存下一个操作符右边的操作数。

                            Operator = ch ; // 保存本次遇到的操作符,当前不会计算这个操作符,因为操作符右边的操作数还没有读取到。

                     }

                    

              }

             

       } // end for

      

       // 表达式遍历完后,会遗留下最后一个操作数,进行最后一项的计算。

       Operand1 = Calculate( Operand1 , Operand2 , Operator ) ;

      

       return Operand1 ;

}

其实我也不知道哪里最重要,但是这个开头必不可少。

7. 结合在构建之法中学习到的相关内容与个人项目的实践经历,撰写解决项目的心路历程与收获。

答: 通过对编程的构建,编写,测试代码;我明白了写之前先将代码的架构想清楚,需要哪些函数,方法,需要定义哪些变量等,这样在写代码的时候思路就会很清晰。多看几遍检查逻辑漏洞等问题,可以大大提高代码的正确性和稳定性。

posted @ 2018-09-19 16:00  墨上莫离  阅读(135)  评论(1)    收藏  举报