课后作业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. 结合在构建之法中学习到的相关内容与个人项目的实践经历,撰写解决项目的心路历程与收获。
答: 通过对编程的构建,编写,测试代码;我明白了写之前先将代码的架构想清楚,需要哪些函数,方法,需要定义哪些变量等,这样在写代码的时候思路就会很清晰。多看几遍检查逻辑漏洞等问题,可以大大提高代码的正确性和稳定性。

浙公网安备 33010602011771号