第二次作业

GIT地址 https://github.com/ycl-web
GIT用户名 ycl-web
学号后六位 190418
博客地址 https://home.cnblogs.com/u/ycldbk/
作业链接 https://www.cnblogs.com/harry240/p/11515697.html

一、vs2017安装过程

​ 在学校的图书馆下载的这个软件,软件本身比较大,而我最近一个学期在学c++,所以我只下载了关于c++的部分,在宿舍下载遇到一些问题,可能与宽带有些问题。

二、GIT下载

​ 这个下载很容易,需要的时间也不多,在官网下载就好,对于这个软件第一次接触,所以不太熟悉,在操作时还是遇到一些问题,但是“一回生二回熟”,在尝试几次操作以后就对本次作业要求的操作很熟悉了。

三、克隆代码

​ 对于这个步骤,还是有些复杂,毕竟我也是第一次操作这些东西,但是学会以后就会发现,这个软件是很有用的,对于我们学习代码。

1.在网址fork

​ 首先,我打开了需要克隆的网址,然后根据提示fork了图片。

2.然后就在新建文件夹里GIT

​ 首先打开自己搞好的新建文件夹,然后打开GIT输入下图的代码。注意!!!!!:复制那个网址是只能用鼠标,不可以用ctrl+v。

3.转换格式C++

​ 由于克隆来的代码是Java的形式,我最近只学了c++,所以我需要把这个代码转换成c++形式。

需要自己在已经新建的文件夹里再新建一个文件夹,在里面打开GIT,使用git checkout cplusplus 命令切换到 C++ 项目。

四、代码说明

​ 首先,我要对我的代码进行说明,对于题中要求,我只完成了一个要求,那就是正确输出需要的题,在克隆来的代码中,输出的代码没有按照整除的形式。

​ 第二个问题就是在出好的题,无法输出正确的答案。由于刚刚开始学习c++所以没有解决这个问题。

但是在作业以后一定好好研究这个问题。

​ 以下为代码:

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

include "pch.h"

//#include

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门提示:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

//#include "stdafx.h"

include

include

include

include "stdlib.h"

include

include

include "Calculator.h"

define random(a,b) (rand()%(b-a+1)+a)

using namespace std;

Calculator::Calculator() {}

string Calculator::MakeFormula() {
string formula = "";
srand((unsigned int)time(NULL));
int count = random(1, 3);
int start = 0;
int number1 = random(1, 100);
int num = number1;
formula += to_string(number1);
while (start <= count) {
int a,number2;
int operation = random(0, 3);
if (operation == 3)
{
number2 = random(1, 100);
while (num%number2 != 0)
{
number2 = random(1, 100);
}
num = number2;
}
else
{
number2 = random(1, 100);
num = number2;
}
formula += op[operation] + to_string(number2);
start++;
}
return formula;
};

string Calculator::Solve(string formula) {
vector* tempStack = new vector();
stack* operatorStack = new stack();
int len = formula.length();
int k = 0;
for (int j =-1; j < len-1 ; j++) {
char formulaChar = formula[j + 1];
if (j == len - 2 || formulaChar == '+' || formulaChar == '-' ||
formulaChar == '' || formulaChar == '/') {
if (j == len - 2) {
tempStack->push_back(formula.substr(k));
}
else {
if (k < j) {
tempStack->push_back(formula.substr(k, j + 1));
}
if (operatorStack->empty()) {
operatorStack->push(formulaChar);
}
else {
char stackChar = operatorStack->top();
if ((stackChar == '+' || stackChar == '-')
&& (formulaChar == '
' || formulaChar == '/')) {
operatorStack->push(formulaChar);
}
else {
tempStack->push_back(to_string(operatorStack->top()));
operatorStack->pop();
operatorStack->push(formulaChar);
}
}
}
k = j + 2;
}
}
while (!operatorStack->empty()) {
tempStack->push_back(string(1, operatorStack->top()));
operatorStack->pop();
}
stack* calcStack = new stack();
for (int i = 0; i < tempStack->size(); i++) {
string peekChar = tempStack->at(i);
if (peekChar != "+" && peekChar != "-"
&& peekChar != "/" && peekChar != "") {
calcStack->push(peekChar);
}
else {
int a1 = 0;
int b1 = 0;
if (!calcStack->empty()) {
b1 = stoi(calcStack->top());
calcStack->pop();
}
if (!calcStack->empty()) {
a1 = stoi(calcStack->top());
calcStack->pop();
}
if (peekChar == "+") {
calcStack->push(to_string(a1 + b1));
}
else if (peekChar == "-") {
calcStack->push(to_string(a1 - b1));
}
else if (peekChar == "
") {
calcStack->push(to_string(a1 * b1));
}
else if (peekChar == "/") {
calcStack->push(to_string(a1 / b1));
}
}
}
return formula + "=" + calcStack->top();
}

int main()
{

//	int b,a,c=0;
//	cin >> b;
//	for (a = 0; a < b; a++) {
Calculator* calc = new Calculator();
string question = calc->MakeFormula();
cout << question << endl;

string ret = calc->Solve(question);
cout << ret << endl;
//		c++;
//	}
//	cout << c;

}

这个为主函数,其他头文件在作业要求中有,就不具体体现了,其中有两个函数,一个是随机产生题目,数字用rand实现,用srand产生不一样的随机数,而加减乘除也用随机数,产生。第二个函数可以计算出string类型的计算结果,但是没找出问题,所以。。。。。

五、总结

对于这次实验不还很满意,原因很简单,没有完成要求,但是以后学好c++会更新自己的博客,完成练习。

posted on 2019-09-23 22:58  yclwzx  阅读(129)  评论(0编辑  收藏  举报