好好學(xué)習(xí),天天向上
一、這是一個根據(jù)規(guī)定的開頭
因為之前的博客好像并沒有達(dá)到這次作業(yè)的要求,所以我又完全的根據(jù)了作業(yè)的要求有VS2017重新寫了一次博客。
二、以下是這次博客的主要部分
https://www.cnblogs.com/kadcyh/p/11571040.html
其實整個框架和之前沒什么差別,所以主要寫一下自己不太會的地方。
1 正式作業(yè)前的的準(zhǔn)備
首先需要一個GitHub的賬號,因為之前就已經(jīng)注冊了,所以這一步?jīng)]什么問題。但是因為GitHub上面全是英語,所以看起來比較麻煩,回過頭來想想就算是全中文的網(wǎng)站,我還是不見得全部能看懂。
接下來,因為要將四則運(yùn)算的整個文件下載到本地所以按照要求我又下載了GitHub Desktop這個的下載很順利(今天是我有史以來下軟件最順利的一天,之前我下一個,下了三天還是沒成功。不是突然網(wǎng)斷就是下好了無法安裝。這次可能是中秋節(jié)給了我一點好運(yùn)氣)但是還是因為是全英文所以運(yùn)用起來比較費力。
最后我又下載了VS2017,依然順利。
2 將倉庫拷貝到本地
這一部分出現(xiàn)的問題就是我不知道怎么將Calculator的Branch從java改成C++。因為作業(yè)給出的實現(xiàn)方案用的是Git但是我自己下載的是GItHub Desktop。于是我先用了一段時間想方設(shè)法的實現(xiàn)文中講的Git命令行。后來突然才知道我們的軟件都不一樣,這件事告訴了我:干什么事情之前都要看好前提。
接下來明明應(yīng)該很順利的,可是我一直沒改成功,本地文件一直沒有顯示有.cpp文件。
我就想,要不我直接在我的GitHub上面直接把它的分支改成C++在克隆到本地。這樣倒是能夠在我的GitHub Desktop上存在我改后的倉庫,可是它不能克隆到本地。每當(dāng)我要將它克隆到本地就會提示我Creat Pull Requst……
后面我退而求其次下了一個zip文件,試圖來完成這次作業(yè)……
可是非常有趣的事情發(fā)生了,我知道了 c++ = cplusplus……原來弄了這么久的改分支,就是因為我沒認(rèn)識到cplusplus就是C++的意思。
在VS2017中創(chuàng)建一個新的項目,把拷貝到本地的源文件和頭文件按照要求復(fù)制過去這一部分確實沒什么問題。就是發(fā)現(xiàn)運(yùn)行的結(jié)果和題目要求不一樣。
3 修改代碼思路
關(guān)于代碼的修改,我還是只改了兩個部分。
第一部分:需要一個隨機(jī)產(chǎn)生題目的部分。
具體解決:隨機(jī)產(chǎn)生了一個數(shù)(2~4之間),然后用它做了一個簡單的循環(huán),就完成了這一部分。
增加代碼:
int main()
{
int n;
Calculator* calc = new Calculator();
srand((int)time(0));
n = (rand() % 4) + 2;
for (int i = 0; i < n; i++)
{
string question = calc->MakeFormula();
string ret = calc->Solve(question);
if (ret=="FALSE")
{
cout << question<<endl;
cout << "You can't answer this question,so we do the next one!" << endl;
cout << '\n';
}
else
{
cout << question;
cout << ret << endl;
}
getchar();
}
}
第二部分:我需要判斷產(chǎn)生的運(yùn)算式子結(jié)果不能出現(xiàn)小數(shù)和負(fù)數(shù)。
具體解決:因為運(yùn)算產(chǎn)生出來的算式求解的部分是利用堆棧的方式,并且站內(nèi)存儲的還是字符串那一類型。所以,我先要將棧頂?shù)脑剞D(zhuǎn)換為數(shù)字,再來判斷它是否為整數(shù)或者是否為負(fù)數(shù)。
增加代碼:
string str = calcStack->top();
int num = stoi(str);//zifuchanzhuanhuaweiyigezhwngshu
double num1 = stof(str);
if ((num < 0) || (num1 != num))
{
return "FALSE";
}
//return formula + "=" + calcStack.pop();
return formula + "=" + calcStack->top();
4 單元測試
這一部分應(yīng)該是花費我時間最多的一部分,因為我一步步完全按照流程來的。單元測試中的代碼也沒有報錯,可是一全部測試就報錯我沒有定義“Calculatot”這個標(biāo)識符。甚至連字符串都報錯……
代碼:
#include "stdafx.h"
#include "CppUnitTest.h"
#include "..\ConsoleApplication1\Calculator.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
Calculator* calc = new Calculator();
string ret = calc->Solve("11+22");
Assert::AreEqual(ret, (string)"11+22=33");
}
};
}
因為代碼下面并沒有下滑線,所以至少我的代碼其實沒有問題。但是又既然報錯,然后又應(yīng)該不會是我的電腦有問題。并且連字符串類型都報錯了,那么我寫的#include "Calculator.h"頭文件一定沒用上,那么這樣報錯只有可能我的環(huán)境沒有配置好。即—— 外部依賴項 的路徑我沒弄好,于是我重復(fù)寫一個路徑(包括用在百度上的方法修改)寫了一個多小時??墒沁€是報錯,后來我就覺得是不是我的應(yīng)該關(guān)一下我的VS2017,果然再次打開它就不報錯我的標(biāo)識符沒定義了,報錯打不開這個文件……可是我覺得應(yīng)該不會有問題了,我就繼續(xù)打開VS2017在關(guān)閉VS2017,這樣重復(fù)了幾次。竟然成功運(yùn)行了……
甚至我的**外部依賴項**的路徑就是我最初弄得那個路徑……
5 調(diào)試
這一步因為C語言的老師和C++的老師都講過,盡管換了一個編輯器,但是都是大同小異沒什么大問題。
6提交代碼
因為我用的是GitHub Desktop 所及將代碼同步到自己的賬戶是很容易的,直接hang on 就可以了!
三、這次作業(yè)的感受
因為我自己是一個比較喜歡把自己的事情水掉的人,所以剛開始看到這個真的就隨便寫了一寫,但是后來作業(yè)延期了,我發(fā)現(xiàn)自己應(yīng)該重寫一遍。重寫就發(fā)現(xiàn)就算自己已經(jīng)寫了一遍但是對環(huán)境還是不熟悉。感覺第一次寫的不是我寫的,其實還真的沒什么用!重寫就讓我再次知道這些步驟,還挺有意義的!所以這次作業(yè)對我的幫助真的很大?。。?/code>
|