第二次作业
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
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
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++会更新自己的博客,完成练习。