题目要求:

1、要求在第二次实验(四则运算2)的基础上加上其他功能。

2、要求能够在每个运算式打印出来后,用户能够进行输入计算的答案,并且程序进行判断给出用户输入的答案的正确性。

3、要求实现四则混合运算,适合小学1-6年级的难度

4、要求多个除号相连时,加上括号进行优先级的确定

团队成员:贾兆款、宋海林(http://www.cnblogs.com/hulidanxiang/p/5295475.html

设计思路:

1、首先对要实现的功能进行分析并分解称若干个具体的小函数,这样使得思路更加明确,修改维护更加方便给,同时降低了代码的重用性

2、本实验用到的函数大体有:生成运算符的函数、生成存储运算数据数组的函数、生成运算符数组的函数(含括号)、判断余数的函数、判断负数的函数、进行打印输出的函数

3、由于本次试验是在第二次实验的的基础上进行的完善,所以具体的设计思路和第二次试验一样。此次主要加入的功能是连除时加入括号进行优先级的判定,对输出的运算式能够求得其结果,并能够根据用户的输入对用户的计算结果进行判断正误

#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<fstream>
using namespace std; //生成四个运算数函数,即多运算数式子中的每个操作数
void create_Operand(int A[], int min, int max)
{
for (int i = ; i < ; i++)
{
A[i] = min + rand() % (max - min + );
}
} //若用户选择不生成除法,则只生成含有加减运算的运算符,用string类型存放运算符,并将括号也存到数组中
void create_Operator_JiaJian(string B[], int kuohao)
{
for (int i = ; i < ; i++)
{
B[i] = 'a';
}
if ( == kuohao)
{
string C[];
for (int i = ; i < ; i++)
{
int Judge = rand() % ;
switch (Judge)
{
case :
C[i] = '+'; break;
case :
C[i] = '-'; break;
}
}
int intLeftLocation;
intLeftLocation = + rand() % ;
int intRightLocation;
int a = intLeftLocation + ;
intRightLocation = a + rand() % ( - a);
B[intLeftLocation] = "(";
B[intRightLocation] = ")";
int j = ;
for (int i = ; i < ; i++)
{
if ((B[i] != "(") && (B[i] != ")"))
{
B[i] = C[j];
j++;
}
}
}
else
{
for (int i = ; i < ; i++)
{
int Judge = rand() % ;
switch (Judge)
{
case :
B[i] = '+'; break;
case :
B[i] = '-'; break;
}
}
}
} //生成加减乘除四则运算的运算符
void create_Operator_ChengChu(string B[])
{
for (int i = ; i < ; i++)
{
int Judge = rand() % ;
switch (Judge)
{
case :
B[i] = '+'; break;
case :
B[i] = '-'; break;
case :
B[i] = 'x'; break;
case :
B[i] = "÷"; break;
}
}
} //生成字符数组
void MulDivShuZus(string B[])
{
for (int i = ; i < ; i++)
{
create_Operator_ChengChu(B);
}
if ((B[] == "÷") && (B[] == "÷") && (B[] == "÷")) //规定不能有连续的3个除法
{
int intJudge = + rand() % ;
switch (intJudge)
{
case :
B[] = '+';
break;
case :
B[] = '-';
break;
}
}
} //判断分数中的分子分母是否合法,即分子的绝对值是否小于分母
void judge_Fraction(int &fenzi, int &fenmu, int max)
{
if ((fenzi<) && (((fenzi)*(-))>max))
{
int temp = (-)*fenzi;
fenzi = fenmu;
fenmu = temp*(-);
} //为保证分数相加相减后仍然是真分数,将分子设为小于二分之分母的整数
if (fenzi <= )
{
if (fenzi*(-)>(max / ))
{
fenzi = fenzi / ;
}
}
if (fenzi>)
{
if (fenzi>(max / ))
{
fenzi = fenzi / ;
}
}
} //求分子和分母的最大公约数,以便将分子分母化简到最简
int great_common_Divisor(int fenzi, int fenmu)
{
int original_fenzi = fenzi;
int original_fenmu = fenmu;
int remainder = fenzi%fenmu;
while (remainder != )
{
int temp = fenmu;
fenmu = fenzi%fenmu;
fenzi = temp;
remainder = fenzi%fenmu;
}
return fenmu;
} //计算加减运算式的值,返回一个result值
int calculate_Jiajian(int A[], string B[], int kuohao, int minus, int min, int max)
{
if ( == minus)
{
int result = A[];
if ( == kuohao)
{
result = ;
if ((B[] == "(") && (B[] == ")"))
{
if (B[] == "+")
{
result = A[] + A[];
}
else
{
result = A[] - A[];
}
if (B[] == "+")
{
result = result + A[];
}
else
{
result = A[] - result;
}
if (B[] == "+")
{
result = result + A[];
}
else
{
result = result - A[];
}
}
if ((B[] == "(") && (B[] == ")"))
{
int result1 = ;
if (B[] == "+")
{
result = A[] + A[];
}
else
{
result = A[] - A[];
}
if (B[] == "+")
{
result1 = A[] + A[];
}
else
{
result1 = A[] - A[];
}
if (B[] == "+")
{
result = result + result1;
}
else
{
result = result1 - result;
}
}
if ((B[] == "(") && (B[] == ")"))
{
if (B[] == "+")
{
result = A[] + A[];
}
else
{
result = A[] - A[];
}
if (B[] == "+")
{
result = result + A[];
}
else
{
result = result - A[];
}
if (B[] == "+")
{
result = result + A[];
}
else
{
result = A[] - result;
}
}
return result;
}
else
{
for (int i = ; i < ; i++)
{
if (B[i] == "+")
{
result = result + A[i + ];
}
else
{
result = result - A[i + ];
}
}
return result;
}
}
else
{
int result = A[];
if ( == kuohao)
{
int result = ;
if ((B[] == "(") && (B[] == ")"))
{
if (B[] == "+")
{
result = A[] + A[];
}
else
{
if (A[] > A[])
{
result = A[] - A[];
}
else
{
A[] = max;
result = A[] - A[];
}
}
if (B[] == "+")
{
result = result + A[];
}
else
{
if (A[] > result)
{
result = A[] - result;
}
else
{
B[] = '+';
result = result + A[];
}
}
if (B[] == "+")
{
result = result + A[];
}
else
{
if (result > A[])
{
result = result - A[];
}
else
{
A[] = result / ;
result = result - A[];
}
}
}
if ((B[] == "(") && (B[] == ")"))
{
int result1 = ;
if (B[] == "+")
{
result = A[] + A[];
}
else
{
if (A[] > A[])
{
result = A[] - A[];
}
else
{
A[] = max;
result = A[] - A[];
}
}
if (B[] == "+")
{
result1 = A[] + A[];
}
else
{
if (A[] > A[])
{
result1 = A[] - A[];
}
else
{
A[] = max;
result1 = A[] - A[];
}
}
if (B[] == "+")
{
result = result + result1;
}
else
{
if (result1 > result)
{
result = result1 - result;
}
else
{
B[] = '+';
result = result + result1;
}
}
}
if ((B[] == "(") && (B[] == ")"))
{
if (B[] == "+")
{
result = A[] + A[];
}
else
{
if (A[] > A[])
{
result = A[] - A[];
}
else
{
A[] = max;
result = A[] - A[];
}
}
if (B[] == "+")
{
result = result + A[];
}
else
{
if (result > A[])
{
result = result - A[];
}
else
{
B[] = '+';
result = result + A[];
}
}
if (B[] == "+")
{
result = result + A[];
}
else
{
if (A[] > result)
{
result = A[] - result;
}
else
{
B[] = '+';
result = result + A[];
}
}
}
return result;
}
else
{
for (int i = ; i < ; i++)
{
if (B[i] == "+")
{
result = result + A[i + ];
}
else
{
if (result>A[i + ])
{
result = result - A[i + ];
}
else
{
B[i] = '+';
result = result + A[i + ];
}
}
}
return result;
}
}
} //输出分数,并计算分数的值并且判断用户的计算是否正确
int calculate_ProperFraction(int A[], int B[], int i, int min, int max, int print)
{
fstream fileout;
fileout.open("BiaoDaShi.txt", ios::app);
judge_Fraction(A[i], max, max);
judge_Fraction(B[i], max, max);
int divisor1 = great_common_Divisor(A[i], max);
int divisor2 = great_common_Divisor(B[i], max);
int inputfenzi, inputfenmu;
int suanfu = rand() % ;
switch (suanfu)
{
case :
{
if ( == print)
{
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
cout << A[i] / divisor1 << "/" << max / divisor1 << " + " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
else
{
cout << "请打开当前目录中的BiaoDaShi.txt文件,查看运算式,并将结果输入屏幕上!";
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
fileout << A[i] / divisor1 << "/" << max / divisor1 << " + " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
cin >> inputfenzi >> inputfenmu;
int divisor3 = great_common_Divisor((A[i] + B[i]), max);
if (inputfenzi == ((A[i] + B[i]) / divisor3) && (inputfenmu == (max / divisor3)))
{
cout << "恭喜你答对了!" << endl;
}
else
{
cout << "答错了,继续加油哦!" << endl;
}
break;
}
case :
{
if ( == print)
{
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
cout << A[i] / divisor1 << "/" << max / divisor1 << " - " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
else
{
cout << "请打开当前目录中的BiaoDaShi.txt文件,查看运算式,并将结果输入屏幕上!";
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
fileout << A[i] / divisor1 << "/" << max / divisor1 << " - " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
cin >> inputfenzi >> inputfenmu;
int divisor3 = great_common_Divisor((A[i] - B[i]), max);
if (inputfenzi == ((A[i] - B[i]) / divisor3) && (inputfenmu == (max / divisor3)))
{
cout << "恭喜你答对了!" << endl;
}
else
{
cout << "答错了,继续加油哦!" << endl;
}
break;
}
case :
{
if ( == print)
{
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
cout << A[i] / divisor1 << "/" << max / divisor1 << " x " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
else
{
cout << "请打开当前目录中的BiaoDaShi.txt文件,查看运算式,并将结果输入屏幕上!";
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
fileout << A[i] / divisor1 << "/" << max / divisor1 << " x " << B[i] / divisor2 << "/" << max / divisor2 << " = " << endl;
}
cin >> inputfenzi >> inputfenmu;
int divisor3 = great_common_Divisor((A[i] * B[i]), (max * max));
if (inputfenzi == ((A[i] * B[i]) / divisor3) && (inputfenmu == ((max*max) / divisor3)))
{
cout << "恭喜你答对了!" << endl;
}
else
{
cout << "答错了,继续加油哦!" << endl;
}
break;
}
case :
{
if ( == print)
{
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
cout << B[i] / divisor2 << "/" << max / divisor2 << " ÷ " << A[i] / divisor1 << "/" << max / divisor1 << " = " << endl;
}
else
{
cout << "请打开当前目录中的BiaoDaShi.txt文件,查看运算式,并将结果输入屏幕上!";
cout << "请计算该分数算式(结果输入格式:分子 空格 分母):";
fileout << B[i] / divisor2 << "/" << max / divisor2 << " ÷ " << A[i] / divisor1 << "/" << max / divisor1 << " = " << endl;
}
cin >> inputfenzi >> inputfenmu;
int divisor3 = great_common_Divisor(B[i], A[i]);
if ((inputfenzi == (B[i] / divisor3)) && (inputfenmu == (A[i] / divisor3)))
{
cout << "恭喜你答对了!" << endl;
}
else
{
cout << "答错了,继续加油哦!" << endl;
}
break;
}
}
return ;
} //输出加减四则运算式,一种方式为输出到屏幕,另一种方式为输出到文件
void output_JiaJian(int A[], string B[], int kuohao, int print)
{
if ( == print)
{
if ( == kuohao)
{
if ((B[] == "(") && (B[] == ")"))
{
cout << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << B[] << " " << A[] << " = " << endl;
}
if ((B[] == "(") && (B[] == ")"))
{
cout << A[] << " " << B[] << " " << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << " = " << endl;
}
if ((B[] == "(") && (B[] == ")"))
{
cout << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << " = " << endl;
}
}
else
{
for (int i = ; i < ; i++)
{
cout << A[i] << " " << B[i] << " ";
}
cout << A[] << " = " << endl;
}
}
else
{
cout << "请打开当前目录中的BiaoDaShi.txt文件,查看运算式,并将结果输入屏幕上!";
fstream fileout;
fileout.open("BiaoDaShi.txt", ios::app);
if ( == kuohao)
{
if ((B[] == "(") && (B[] == ")"))
{
fileout << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << B[] << " " << A[] << " = " << endl;
}
if ((B[] == "(") && (B[] == ")"))
{
fileout << A[] << " " << B[] << " " << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << " = " << endl;
}
if ((B[] == "(") && (B[] == ")"))
{
fileout << A[] << " " << B[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << " = " << endl;
}
}
else
{
for (int i = ; i < ; i++)
{
fileout << A[i] << " " << B[i] << " ";
}
fileout << A[] << " = " << endl;
}
fileout.close();
}
} //判断用户输入的结果是否正确,给出相应的提示
void minus_JiaJian(int A[], string B[], int min, int max, int minus, int kuohao, int print)
{
int inputResult;
create_Operand(A, min, max);
create_Operator_JiaJian(B, kuohao);
int calculateResult = calculate_Jiajian(A, B, kuohao, minus, min, max);
output_JiaJian(A, B, kuohao, print);
cin >> inputResult;
if (calculateResult == inputResult)
{
cout << "恭喜你答对了!" << endl;
}
else
{
cout << "答错了,继续加油哦!" << endl;
}
} //生成运算符数组
int YSShuZus(string B[], int kuohao)
{
int intYunSFNum;
if ( == kuohao) //如果没有括号
{
MulDivShuZus(B);
intYunSFNum = ;
}
else //如果有括号
{
MulDivShuZus(B); //获得没有括号的运算符数组
string chLinShi[]; //临时数组
for (int i = ; i < ; i++)
{
chLinShi[i] = B[i];
}
intYunSFNum = ;
int intRealstring[];
for (int i = ; i < ; i++) //将运算符按优先级存储起来
{
if (B[i] == "+" || B[i] == "-")
{
intRealstring[i] = ;
}
else
{
intRealstring[i] = ;
}
} for (int i = ; i < ; i++)
{
if (chLinShi[] == "÷")
{
if (chLinShi[] == "÷")
{
intYunSFNum = ;
B[] = "(";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
B[] = chLinShi[];
break;
} }
if (intRealstring[i]<intRealstring[i + ])
{
if (i == )
{
if (chLinShi[i + ] == "÷")
{
if (chLinShi[i + ] == "÷")
{
intYunSFNum = ;
B[] = "(";
B[] = "(";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
}
else
{
intYunSFNum = ;
B[] = "(";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
B[] = chLinShi[];
}
}
else
{
intYunSFNum = ;
B[] = "(";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
B[] = chLinShi[];
}
}
else
{
intYunSFNum = ;
B[] = chLinShi[];
B[] = "(";
B[] = chLinShi[];
B[] = ")";
B[] = chLinShi[];
}
}
}
}
return intYunSFNum;
} // //生成两个存储数据的数组,主函数中的作用是用来进行判断是进行两位真分数的判断还是多位整数的四则运算
void createArray(int A[], int B[], int count, int min, int max)
{
while ((max - min + ) < count)
{
cout << "数值范围输入错误,请重新输入数值范围(友情提示:数值范围应大于运算式的数量)!" << endl;
cout << "请输入参与四则运算的数值范围(格式如:1 100):";
cin >> min >> max;
}
for (int i = ; i < count; i++)
{ A[i] = min + rand() % (max - min + );
B[i] = min + rand() % (max - min + ); for (int j = ; j < i; j++)
{
if (A[i] == A[j])
{
A[i] = min + rand() % (max - min + );
j = -; //通过设置j,对新生成的数A[i],使其和前面的所有数进行比较,此循环重复
}
}
for (int j = ; j < i; j++)
{
if (B[i] == B[j])
{
B[i] = min + rand() % (max - min + );
j = -;
}
}
}
} //生成加减运算符
void AddRedu(string &stringArry)
{
//srand((int)time(NULL));
int intJudge; //此变量分别以1,2,3,4代表+、-、×、÷ intJudge = + rand() % ;
switch (intJudge)
{
case :
{
stringArry = '+';
break;
}
case :
{
stringArry = '-';
break;
}
}
} //生成乘除运算符
void MulDiv(string &stringArry)
{
//srand((int)time(NULL));
int intJudge; //此变量分别以1,2,3,4代表+、-、×、÷ intJudge = + rand() % ;
switch (intJudge)
{
case :
{
stringArry = '+';
break;
}
case :
{
stringArry = '-';
break;
}
case :
{
stringArry = "×";
break;
}
case :
{
stringArry = "÷";
break;
}
}
} //判断乘除号,生成字符数组
void MulDivShuZu(string stringMDYSF[], int intMulDiv)
{
//srand((int)time(NULL));
if (intMulDiv == ) //如果没有乘除法
{
//srand((int)time(NULL)); //若还原还原此处
for (int i = ; i < ; i++)
{
AddRedu(stringMDYSF[i]);
}
}
else //如果有乘除法
{
//srand((int)time(NULL)); //若还原还原此处
for (int i = ; i < ; i++)
{
MulDiv(stringMDYSF[i]);
} for (int i = ; i < ; i++) //不能有连续的3个除法
{
if (stringMDYSF[i] == "÷")
{
if (stringMDYSF[i + ] == "÷" && stringMDYSF[i + ] == "÷")
{
AddRedu(stringMDYSF[i + ]);
}
}
} }
} //生成运算符数组
void YSShuZu(string stringYunSF[], int intMulDiv, int intKuoHao, int &intYunSFNum)
{
//srand((int)time(NULL));
if ( == intKuoHao) //如果没有括号
{
MulDivShuZu(stringYunSF, intMulDiv);
intYunSFNum = ;
}
else //如果有括号
{
MulDivShuZu(stringYunSF, intMulDiv); //获得没有括号的运算符数组 string chLinShi[]; //临时数组
for (int i = ; i < ; i++)
{
chLinShi[i] = stringYunSF[i];
} if ( == intMulDiv) //如果没有乘除,只有加减,加上括号
{
int intKHaoNum;
//intKHaoNum = 1 + rand() % 2; 用于判断生成几个括号时使用此功能
intKHaoNum = ; if ( == intKHaoNum) //加一个括号
{
intYunSFNum = ; //运算符的个数为5个
int intLeftLocation;
intLeftLocation = + rand() % ;
int intRightLocation;
int a = intLeftLocation + ;
intRightLocation = a + rand() % ( - a); stringYunSF[intLeftLocation] = "(";
stringYunSF[intRightLocation] = ")"; int j = ;
for (int i = ; i < ; i++)
{
if ((stringYunSF[i] != "(") && (stringYunSF[i] != ")"))
{
stringYunSF[i] = chLinShi[j];
j++;
}
} }
/* 用于判断生成几个括号时使用此功能
else //加两个括号
{
intYunSFNum = 7; //运算符个数为7个
stringYunSF[0] = "(";
stringYunSF[1] = chLinShi[0];
stringYunSF[2] = ")";
stringYunSF[3] = chLinShi[1];
stringYunSF[4] = "(";
stringYunSF[5] = chLinShi[2];
stringYunSF[6] = ")";
}*/
}
else //如果有乘除,加上括号
{
intYunSFNum = ; int intRealstring[];
for (int i = ; i < ; i++) //将运算符按优先级存储起来
{
if (stringYunSF[i] == "+" || stringYunSF[i] == "-")
{
intRealstring[i] = ;
}
else
{
intRealstring[i] = ;
}
} for (int i = ; i < ; i++)
{
if (chLinShi[] == "÷")
{
if (chLinShi[] == "÷")
{
intYunSFNum = ;
stringYunSF[] = "(";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
stringYunSF[] = chLinShi[];
break;
} }
if (intRealstring[i]<intRealstring[i + ])
{
if (i == )
{
if (chLinShi[i + ] == "÷")
{
if (chLinShi[i + ] == "÷")
{
intYunSFNum = ;
stringYunSF[] = "(";
stringYunSF[] = "(";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
}
else
{
intYunSFNum = ;
stringYunSF[] = "(";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
stringYunSF[] = chLinShi[];
}
}
else
{
intYunSFNum = ;
stringYunSF[] = "(";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
stringYunSF[] = chLinShi[];
}
}
else
{
intYunSFNum = ;
stringYunSF[] = chLinShi[];
stringYunSF[] = "(";
stringYunSF[] = chLinShi[];
stringYunSF[] = ")";
stringYunSF[] = chLinShi[];
}
}
} }
} } //函数实现有无余数
void RemainderFouction(int intNum[], string stringYunSuanFu[], int intYunSuanFNu)
{ //包括括号和乘除法的区分
//首先实现对乘除法有无余数的判断
//其次加入括号,判断括号内的乘除法有无余数的实现 //对运算符数组循环寻找括号和乘除号
int intCycleNum = ;
int intParentNum = ;
for (intCycleNum = ; intCycleNum < intYunSuanFNu; intCycleNum++)
{
if ((stringYunSuanFu[intCycleNum] == "(") || (stringYunSuanFu[intCycleNum] == ")"))
{
intParentNum += ;
} if (stringYunSuanFu[intCycleNum] == "÷")
{
if (intNum[intCycleNum + - intParentNum] == )
{
intNum[intCycleNum + - intParentNum] = + rand() % ;
} if (intCycleNum != && stringYunSuanFu[intCycleNum - ] == ")") //此IF语句是测试(a+b)÷c的情况
{
int num;
num = intCycleNum - intParentNum; //标识没有括号的字符数组中除号的位置 int intSum; //括号内的数的运算结果
int intLeft; //括号内参与运算的左边的数
int intRight; //括号内参与运算的右边的数
string strYunSF;
intLeft = intNum[num - ];
intRight = intNum[num];
strYunSF = stringYunSuanFu[intCycleNum - ];
if (strYunSF == "+")
{
intSum = intLeft + intRight;
}
else if (strYunSF == "-")
{
intSum = intLeft - intRight;
if (intSum < )
{
intNum[num - ] = intRight;
intNum[num] = intLeft;
intSum = intRight - intLeft;
} }
else if (strYunSF == "×")
{
intSum = intLeft * intRight;
}
else
{
intSum = intLeft / intRight;
} if (intSum < )
{
int a;
a = intNum[num];
intNum[num] = intNum[num + ];
intNum[num + ] = intNum[num];
intSum = intNum[num] - intNum[num + ];
} int intYushu; //余数
intYushu = intSum % (intNum[num + ]); //除号两边的数求商
if (intYushu != )
{
if (intSum == )
{
intNum[num + ] = ;
}
else
{
int j = intSum - ;
for (int i = ; i < intSum; i++)
{
intYushu = intSum%j;
if (intYushu == )
{
intNum[num + ] = j;
break;
}
j--;
}
} } //下面是(a+b)÷c÷d的情况
if (stringYunSuanFu[intCycleNum + ] == "÷")
{
int intOneResult; //intOneReslut=(a+b)÷c
intOneResult = intSum / intNum[num + ];
int intSecResult; //intSecResult=(a+b)÷c÷d
if (intNum[num + ] == )
{
intNum[num + ] = + rand() % ;
}
intSecResult = intOneResult % (intNum[num + ]); if (intSecResult != )
{
if (intOneResult == )
{
intNum[num + ] = ;
}
else
{
int intSecYue;
intSecYue = intOneResult - ; for (int i = ; i < intOneResult; i++)
{
intSecResult = intOneResult%intSecYue;
if (intSecResult == )
{
intNum[num + ] = intSecYue;
break;
}
intSecYue--;
}
} } } }
else //a÷b的情况
{
int num;
num = intCycleNum - intParentNum; int YuShu;
if (intNum[num + ] == )
{
intNum[num + ] = + rand() % ;
}
YuShu = (intNum[num]) % (intNum[num + ]);
if (YuShu != )
{
if (intNum[num] == )
{
intNum[num + ] = ;
}
else
{
int j = intNum[num] - ;
for (int i = ; i < intNum[num]; i++)
{
YuShu = intNum[num] % j;
if (YuShu == )
{
intNum[num + ] = j;
break;
}
j--;
}
} } //下面是a÷b÷c的情况
if (stringYunSuanFu[intCycleNum + ] == "÷")
{
int OneRes;
OneRes = intNum[num] % intNum[num + ];
if (OneRes != )
{
int j;
j = intNum[num] - ;
for (int i = ; i < intNum[num]; i++)
{
OneRes = intNum[num] % j;
if (OneRes == )
{
intNum[num + ] = j;
break;
}
j--;
}
}
OneRes = intNum[num] / intNum[num + ];
int yushus;
if (intNum[num + ] == )
{
intNum[num + ] = + rand() % ;
}
yushus = OneRes % (intNum[num + ]);
if (yushus != )
{
if (OneRes == )
{
intNum[num + ] = ;
}
else
{
int yueshu;
yueshu = OneRes - ;
for (int i = ; i < OneRes; i++)
{
yushus = OneRes%yueshu;
if (yushus == )
{
intNum[num + ] = yueshu;
break;
}
yueshu--;
}
} }
}
}
} } //
if (stringYunSuanFu[] == "÷" && stringYunSuanFu[] == "(" && stringYunSuanFu[] == ")") //a÷(b+c)
{
int intTemps;
if (stringYunSuanFu[] == "+")
{
intTemps = intNum[] + intNum[];
int yushuab;
yushuab = intNum[] % intTemps;
if (yushuab != )
{
intNum[] = * intTemps;
}
//cout << "yueshu=" << yushuab << " ";
//cout << "第一种情况:" << "intTemps=" << intTemps << " " << "intNum[0]=" << intNum[0] << endl;
}
if (stringYunSuanFu[] == "-")
{
intTemps = intNum[] - intNum[];
if (intTemps < )
{
int aaa;
aaa = intNum[];
intNum[] = intNum[];
intNum[] = aaa; intTemps = intNum[] - intNum[];
}
if (intTemps == )
{
intNum[] = + rand() % ;
intNum[] = intNum[] + rand() % ;
intTemps = intNum[] - intNum[];
}
int yushua;
yushua = intNum[] % intTemps;
if (yushua != )
{
intNum[] = * intTemps;
} //cout << "yueshu=" << yushua << " ";
//cout << "第二种情况:" << "intTemps=" << intTemps << " " << "intNum[0]=" << intNum[0] << endl;
} for (int i = ; i < ; i++)
{
cout << intNum[i] << " ";
}
cout << endl;
}
} //含有乘除法的计算
double OperatorMD(int intYunSuanShu[], string strYunSuanFu[], int YunSuanfuN)
{
double jieguo = ; if ((strYunSuanFu[] == "(") && (strYunSuanFu[] == "("))
{
double jieguo1;
if (strYunSuanFu[] == "+")
{
jieguo = (intYunSuanShu[] + intYunSuanShu[]) / intYunSuanShu[] / intYunSuanShu[];
}
else
{
jieguo = (intYunSuanShu[] - intYunSuanShu[]) / intYunSuanShu[] / intYunSuanShu[];
}
}
if (strYunSuanFu[] == "(")
{
double jieguo1;
if (strYunSuanFu[] == "+")
{
jieguo1 = intYunSuanShu[] + intYunSuanShu[];
}
else if (strYunSuanFu[] == "-")
{
jieguo1 = intYunSuanShu[] - intYunSuanShu[];
}
else
{
jieguo1 = intYunSuanShu[] / intYunSuanShu[];
} if (strYunSuanFu[] == "×")
{
jieguo1 = jieguo1*intYunSuanShu[];
}
else
{
jieguo1 = jieguo1 / intYunSuanShu[];
} if (strYunSuanFu[] == "+")
{
jieguo = jieguo1 + intYunSuanShu[];
}
else if (strYunSuanFu[] == "-")
{
jieguo = jieguo1 - intYunSuanShu[];
}
else if (strYunSuanFu[] == "×")
{
jieguo = jieguo1 * intYunSuanShu[];
}
else
{
jieguo = jieguo1 / intYunSuanShu[];
}
} if (strYunSuanFu[] == "(" && strYunSuanFu[] != "(")
{
cout << "开始运行!" << endl;
int jieguo1;
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] + (intYunSuanShu[] + intYunSuanShu[])*intYunSuanShu[];
cout << "+(+)*" << endl;
}
else
{
jieguo = intYunSuanShu[] + (intYunSuanShu[] + intYunSuanShu[]) / intYunSuanShu[];
cout << "+(+)/" << endl;
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] - (intYunSuanShu[] + intYunSuanShu[])*intYunSuanShu[];
cout << "-(+)*" << endl;
}
else
{
jieguo = intYunSuanShu[] - (intYunSuanShu[] + intYunSuanShu[]) / intYunSuanShu[];
cout << "-(+)/" << endl;
}
}
if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] * (intYunSuanShu[] + intYunSuanShu[])*intYunSuanShu[];
cout << "*(+)*" << endl;
}
else
{
jieguo = intYunSuanShu[] * (intYunSuanShu[] + intYunSuanShu[]) / intYunSuanShu[];
cout << "*(+)/" << endl;
}
}
if (strYunSuanFu[] == "÷")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] / (intYunSuanShu[] + intYunSuanShu[])*intYunSuanShu[];
cout << "/(+)*" << endl;
}
else
{
jieguo = intYunSuanShu[] / (intYunSuanShu[] + intYunSuanShu[]) / intYunSuanShu[];
cout << "/(+)/" << endl;
}
}
}
else
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] + (intYunSuanShu[] - intYunSuanShu[])*intYunSuanShu[];
cout << "+(-)*" << endl;
}
else
{
jieguo = intYunSuanShu[] + (intYunSuanShu[] - intYunSuanShu[]) / intYunSuanShu[];
cout << "+(-)/" << endl;
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] - (intYunSuanShu[] - intYunSuanShu[])*intYunSuanShu[];
cout << "-(-)*" << endl;
}
else
{
jieguo = intYunSuanShu[] - (intYunSuanShu[] - intYunSuanShu[]) / intYunSuanShu[];
cout << "-(-)*" << endl;
}
}
if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] * (intYunSuanShu[] - intYunSuanShu[])*intYunSuanShu[];
cout << "*(-)*" << endl;
}
else
{
jieguo = intYunSuanShu[] * (intYunSuanShu[] - intYunSuanShu[]) / intYunSuanShu[];
cout << "*(-)/" << endl;
}
}
if (strYunSuanFu[] == "÷")
{
if (strYunSuanFu[] == "×")
{
int ab = intYunSuanShu[] - intYunSuanShu[];
if (ab == )
{
intYunSuanShu[] = ;
intYunSuanShu[] = - rand() % ;
}
jieguo = intYunSuanShu[] / (intYunSuanShu[] - intYunSuanShu[])*intYunSuanShu[];
cout << "/(-)*" << endl;
}
else
{
int ab = intYunSuanShu[] - intYunSuanShu[];
if (ab == )
{
intYunSuanShu[] = ;
intYunSuanShu[] = - rand() % ;
}
jieguo = intYunSuanShu[] / (intYunSuanShu[] - intYunSuanShu[]) / intYunSuanShu[];
cout << "/(-)/" << endl;
}
}
} }
if ((strYunSuanFu[] != "(") && (strYunSuanFu[] != "("))
{
int jieguo1;
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[];
}
}
else
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[];
}
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] - intYunSuanShu[] * intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] - intYunSuanShu[] * intYunSuanShu[] - intYunSuanShu[];
}
} if (strYunSuanFu[] == "÷")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] - intYunSuanShu[] / intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] - intYunSuanShu[] / intYunSuanShu[] - intYunSuanShu[];
}
}
} if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] * intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] * intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[] + intYunSuanShu[];
}
if (strYunSuanFu[] == "-")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[] - intYunSuanShu[];
}
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[];
}
if (strYunSuanFu[] == "÷")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[];
}
}
if (strYunSuanFu[] == "÷") //strYunSuanFu[1]=="÷"
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[] + intYunSuanShu[];
}
if (strYunSuanFu[] == "-")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[] - intYunSuanShu[];
}
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[] * intYunSuanShu[];
}
if (strYunSuanFu[] == "÷")
{
jieguo = intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[] / intYunSuanShu[];
}
}
}
if (strYunSuanFu[] == "÷")
{
if (strYunSuanFu[] == "+")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] + intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] / intYunSuanShu[] + intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "-")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] - intYunSuanShu[] + intYunSuanShu[];
}
else
{
jieguo = intYunSuanShu[] / intYunSuanShu[] - intYunSuanShu[] - intYunSuanShu[];
}
}
if (strYunSuanFu[] == "×")
{
if (strYunSuanFu[] == "+")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] * intYunSuanShu[] + intYunSuanShu[];
}
if (strYunSuanFu[] == "-")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] * intYunSuanShu[] - intYunSuanShu[];
}
if (strYunSuanFu[] == "×")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] * intYunSuanShu[] * intYunSuanShu[];
}
if (strYunSuanFu[] == "÷")
{
jieguo = intYunSuanShu[] / intYunSuanShu[] * intYunSuanShu[] / intYunSuanShu[];
}
} }
} return jieguo;
} //乘除运算的输出
void MDOutput(int intNumC[], string stringOperator[], int intYunSFLen,int intPrintS)
{
//对运算式进行输出
if ( == intPrintS)
{
int fuhaojishus0 = ;
for (int shuchushuzi = ; shuchushuzi < ; shuchushuzi++)
{
if (shuchushuzi == )
{
if (stringOperator[] == "(")
{
cout << stringOperator[];
fuhaojishus0 = ; if (stringOperator[] == "(")
{
cout << stringOperator[];
fuhaojishus0 = ;
}
} } cout << intNumC[shuchushuzi]; for (; fuhaojishus0 < intYunSFLen;)
{
while (stringOperator[fuhaojishus0] == ")")
{
cout << ")";
fuhaojishus0 += ;
}
if (fuhaojishus0 < intYunSFLen)
{
cout << stringOperator[fuhaojishus0]; //输出右括号紧邻的运算符或者是输出第一个符号
} fuhaojishus0 += ;
while (stringOperator[fuhaojishus0] == "(")
{
cout << "(";
fuhaojishus0 += ;
}
break;
}
}
}
else
{
fstream outfile;
outfile.open("BiaoDaShi.txt", ios::app); int fuhaojishus0 = ;
for (int shuchushuzi = ; shuchushuzi < ; shuchushuzi++)
{
if (shuchushuzi == )
{
if (stringOperator[] == "(")
{
outfile << stringOperator[];
fuhaojishus0 = ; if (stringOperator[] == "(")
{
outfile << stringOperator[];
fuhaojishus0 = ;
}
} } outfile << intNumC[shuchushuzi]; for (; fuhaojishus0 < intYunSFLen;)
{
while (stringOperator[fuhaojishus0] == ")")
{
outfile << ")";
fuhaojishus0 += ;
}
if (fuhaojishus0 < intYunSFLen)
{
outfile << stringOperator[fuhaojishus0]; //输出右括号紧邻的运算符或者是输出第一个符号
} fuhaojishus0 += ;
while (stringOperator[fuhaojishus0] == "(")
{
outfile << "(";
fuhaojishus0 += ;
}
break;
}
}
outfile << endl;
outfile.close();
}
} // void output_ChengChu(int A[], string B[], int min, int max, int kuohao, int print)
{
int kuohaoNum = ;
fstream fileout;
fileout.open("BiaoDaShi.txt", ios::app);
create_Operand(A, min, max);
MulDivShuZus(B);
int suanfuNum = YSShuZus(B, kuohao);
RemainderFouction(A, B, suanfuNum);
if ( == suanfuNum)
{
if ( == print)
{
cout << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " = " << endl;
}
else
{
fileout << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " " << B[] << " " << A[] << " = " << endl;
}
}
else
{
for (int i = ; i < suanfuNum; i++)
{
if ((B[i] == "(") || (B[i] == ")"))
{
if (i == || ((i != ) && B[i] == "("))
{
kuohaoNum++;
cout << B[i];
continue;
}
else
{
cout << A[i - kuohaoNum];
kuohaoNum++;
cout << B[i];
continue;
}
}
else
{
if (B[i - ] == "(")
{
cout << A[i - kuohaoNum] << B[i];
}
else
{
cout << B[i] << A[i - kuohaoNum + ];
}
}
}
cout << " = " << endl;
}
} //主函数
int main()
{
fstream fileout;
fileout.open("BiaoDaShi.txt", ios::out); //以输出的方式打开文件,将其上次存放的内容清空
fileout.close(); //关闭文件 srand((int)time(NULL)); int intPrintStyle; //定义打印方式(DOS界面打印、输出到文件)
int intMultiplyDivide; //定义是否有乘除法,0代表没有,1代表有
int intMax, min; //定义四则运算中的数的取值范围
int intMinus; //定义是否有负数,0代表没有,1代表有
int intRemainder; //定义是否有余数,0代表没有,1代表有
int intParentheses; //定义是否有括号,0代表没有,1代表有
int intCount; //定义生成几个运算式
int intYunSFLen = ; //记录运算符长度 cout << "请选择打印方式(0代表DOS界面,1代表文件):";
cin >> intPrintStyle;
cout << "请选择运算可否出现括号(0代表不能,1代表能):";
cin >> intParentheses;
cout << "请选择运算可否出现乘除(0代表没有,1代表有):";
cin >> intMultiplyDivide;
cout << "请选择运算可否出现负数(0代表不能,1代表能):";
cin >> intMinus;
cout << "请选择运算可否出现余数(0代表不能,1代表能):";
cin >> intRemainder;
cout << "请输入运算数的范围(最小 空格 最大):";
cin >> min;
cin >> intMax;
cout << "请输入运算式的个数:";
cin >> intCount; double dobResult; //记录结果值
int intNumA[];
int intNumB[]; //两个数组,存储运算数
createArray(intNumA, intNumB, intCount, min, intMax); //生成两个数组 string stringOperator[];
for (int i = ; i < ; i++)
{
stringOperator[i] = 'a';
}
int intNumC[]; //运算数的数组,存储4个数 //srand((int)time(NULL));
for (int outI = ; outI < intCount; outI++)
{
if (intNumA[outI] < intNumB[outI]) //生成多位整数进行运算
{
for (int i = ; i < ; i++) //生成数组,存储4个整数
{
intNumC[i] = min + rand() % (intMax - min + );
} YSShuZu(stringOperator, intMultiplyDivide, intParentheses, intYunSFLen); //生成运算符 if (==intMultiplyDivide)
{
if ( == intRemainder)
{
RemainderFouction(intNumC, stringOperator, intYunSFLen); //不能出现余数
int intInR;
if (intPrintStyle == )
{
cout << "请输入结果:" << endl;
}
else
{
cout << "请打开文件“BiaoDaShi.txt”并在屏幕上输入结果:" << endl;
}
MDOutput(intNumC, stringOperator, intYunSFLen,intPrintStyle);
dobResult = OperatorMD(intNumC, stringOperator, intYunSFLen);
cout << "=";
cin >> intInR; if (intInR == dobResult)
{
cout << " " << "(√)" << endl;
}
else
{
cout << "(×)" << endl;
}
} if ( == intRemainder)
{
int intInR;
cout << "请输入结果:" << endl;
MDOutput(intNumC, stringOperator, intYunSFLen,intPrintStyle);
dobResult = OperatorMD(intNumC, stringOperator, intYunSFLen);
cout << "=";
cin >> intInR;
if (intInR == dobResult)
{
cout << " " << "√" << endl;
}
else
{
cout << "计算结果错误!" << endl;
}
} }
if (==intMultiplyDivide)
{
minus_JiaJian(intNumA,stringOperator,min,intMax,intMinus,intParentheses,intPrintStyle);
}
}
else //使用数组intNumA[100],intNumB[100]中的数进行真分数进行运算
{
calculate_ProperFraction(intNumA, intNumB, outI, min, intMax, intPrintStyle);
}
} cout << endl;
cout << "运算符数组为:";
for (int i = ; i < ; i++)
{
cout << stringOperator[i] << " ";
}
cout << endl;
cout << "运算数数组为:";
for (int i = ; i < ; i++)
{
cout << intNumC[i] << " ";
}
cout << endl; return ;
}

实验截图:

实验总结:

通过本次试验,首先我认为当编写较大的程序是,使用函数是很好的一种方法,他能使得代码的重用性大大降低,使得程序更加简明,结构更加宏观清晰,同时也更加方便阅读和维护。其次,我深刻体会到边编写代码变测试程序的重要性与优点,这样能够快速的发现程序的不足之处,同时在最后完成程序后进行调试会很方便,出的错误会比较少,更加便于维护。上次实验我是将所有功能写入全都写入主函数中,并且是在最后进行的测试,这样真的很麻烦,有时候找到错误之后是牵一发而动全身。另外在写程序和调程序的过程中要做记录,这样会更好的记住自己犯下的错误,并且能够在一定的程度上在之后编程中进行避免。

本次试验最大的收获就是实打实的体验了一把结对开发,这真的挺有意思,开拓了个人的思路,更快更明晰了编程思路,减少了编程过程中的错误,果然是人多力量大。

以下附上实验记录表:

1、项目计划总结表

周活动总结表                               时间:2016年3月19日

日期\任务 听课/时 编写程序/时 阅读课本/时 日总结/时
周一 3.14 2 1   3
周二 3.15        
周三 3.16   2 1 3
周四 3.17 2 3   5
周五 3.18   7   7
周六 3.19   12   12
周日 3.10        
周总计 4 25 1 30

2、时间记录表

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3.14 14:00 16:00   2 听课,编写程序,结对讨论  
  21:00 22:00   1 写程序  
3.15            
3.16 15:00 18:00   3 写程序,看课本  
3.17 14:00 16:00   2 上课,看课本  
  19:30 22:30   3 写程序  
3.18 8:00 10:00   2 写程序  
  13:00 17:00   4 写程序  
  20:00 21:00   1 写程序  
3.19 7:00 9:00   2 写程序  
  12:00 22:00   10 写程序  
3.20            

3、缺陷记录日志

日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
3.14 1   测试 单步调试 15min  
描述:算法公式错误,以致某些情况下得不到正确的结果
3.15            
           
3.16 2   编码 编码 30min  
描述:函数的调用与如何返回值发生混乱
3.17 3   设计 设计 3hour  
描述:程序设计思路混乱
3.18            
           
3.19 4   测试 单步调试 10min  
描述:函数的逻辑结果不正确
3.20            
           

队友博客地址:宋海林(http://www.cnblogs.com/hulidanxiang/p/5295475.html

四则运算3+PSP的更多相关文章

  1. 第四周四则运算3 PSP表格

    PSP2.1 Personal Software Process Stages time Plan 计划   -Estimate 整数四则运算 分数四则运算 括号 括号四则运算 在主函数中调用 30m ...

  2. PSP记录个人项目耗时情况

    四则运算编程 PSP记录个人项目耗时情况 PSP Personal Software Process Stages Time(%) Planning 计划 7 Estimate 估计这个任务需要多少时 ...

  3. Python实现自动生成小学四则运算题目

    Github地址: https://github.com/guoyuyi/gyy.github.io/blob/%E4%BD%9C%E4%B8%9A1/zy1.py 题目描述: 通过python语言编 ...

  4. PSP个人项目耗时对比记录表:四则运算

    Personal Software Process Stages Time(%) 计划 5    •估计这个任务需要多长时间 5 开发 60    •需求分析  5    •生成设计文档  5     ...

  5. 20170928-3 四则运算psp

    1.本周psp: 2.本周进度条: 3.累计进度图(折线图): 4.psp饼状图:

  6. PROJECT | 四则运算UI设计 - PSP表格&需求分析

    PSP表格(TP版) 需求分析 [GUI编程语言选择] 考虑到Java编写GUI效率偏低且界面不算特别美观(即使有Windowbuilder插件帮助),所以我们使用控件更多,开发效率更高,具有集成开发 ...

  7. 四则运算第三次 PSP

     

  8. 作业三:代码规范、代码复审、PSP

    一.代码规范 我认为我们编写的代码都需要进行规范的操作,因为如果为了图省事情或者为了减少时间去完成这个编程.在最后检验的时候就会出现一些警告,导致你这次编程的代码出现问题,当出现问题的时候你在回头去检 ...

  9. 作业三:PSP耗时

    请同学们参照教材<构建之法>2.3节表2-4 PSP2.1汇报自己在完成四则运算编程时候的时间分布,发布到博客上. 个人项目耗时情况分析 PSP Personal Software Pro ...

随机推荐

  1. 知识点:linux数据库备份

    服务端启用二进制日志 如果日志没有启开,必须启用binlog,要重启mysql,首先,关闭mysql,打开/etc/my.cnf,加入以下几行: [mysqld] log-bin 然后重新启动mysq ...

  2. Google App Engine10年,支持更多你喜欢的编程语言

    2008年4月7日google推出Google App Engine(GAE),时间过得真快,10年过去了,2010年3月google退出中国,一转眼也过去7年了.早在2009年的时候GAE就在中国内 ...

  3. 线程守护进程与GIL

    为何要用多线程 多线程指的是,在一个进程中开启多个线程,简单的讲:如果多个任务共用一块地址空间,那么必须在一个进程内开启多个线程.详细的讲分为4点: 1. 多线程共享一个进程的地址空间 2. 线程比进 ...

  4. 「HNOI2015」开店(树链剖分, 主席树)

    /* 考虑将所求的值拆分 记每个点到根的路径长度为dis_i, 那么我们要求的就是\sum_{i = l} ^ r dis_i + dis[u] * (r - l + 1) - 2\sum_{i = ...

  5. VMware虚拟机上配置nginx后,本机无法访问问题

    nginx装在CentOS上,用本机访问虚拟机的时候却出现了不能访问的问题,查了资料以后,原来是防火墙的问题.具体情况如下:防火墙可以ping通虚拟机,虚拟机也可以ping通防火墙.接着检查了服务器端 ...

  6. 【Selenium-WebDriver问题篇】Selenium实现元素的拖拽(java版)(转)

    https://blog.csdn.net/u010503127/article/details/51381284 Selenium实现元素的拖拽(java版) [前言] 自从淘宝网登陆页出现滑块验证 ...

  7. centos安装dlib

    小心这个错误 c++: 编译器内部错误:已杀死(程序 cc1plus)     # 内存不足,可解决的 复制如下命令: yum install cmake python-devel numpy gcc ...

  8. uva-10905-贪心

    题意:对于输入的数字,拼接成一个最大的数字 解法:把数字当成字符串处理,排序,输出即可 import java.io.FileInputStream; import java.io.FileNotFo ...

  9. 12.利用kakatips对网站数据信息监控

    网站信息监控 kakatips软件 百度云链接:https://pan.baidu.com/s/1lNH8OGODbIvYeFTjz6kVEQ 密码:5qtz 这是我编辑好的具体详情如下: 有效标记需 ...

  10. .Net MVC 获取Response和Request对象

    通过  System.Web.HttpContext.Current  获取 public static string ConstractExportExcel(List<ERP_Contrac ...