第二次軟件工程基礎做業

熟悉使用工具ios

git地址  https://github.com/npcccc1/achaodnm.git
git用戶名  npcccc1
博客連接  https://www.cnblogs.com/npc1158947015/
學號後5位  92324
做業連接  https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/homework/7590

 

 

 

 

 

 

 

 

 

1、環境配置過程

以前就用過github註冊挺容易,以前也下好了visual stdio2017,選好了c++組件不過都沒留截圖,git的安裝也沒遇到太大的問題。c++

克隆項目: 在文件類型轉化的嘗試上花了大量時間還沒啥用git

由於對於git瞭解太少的緣由,在網上搜了幾天也沒看懂分支的知識,用git指令解決一個錯又出來一個,因此把克隆過來的項目老是轉化不成c++項目,一直停在默認的master分支,打開它的文件也是Java的。程序員

 

 

2、代碼思路

要求:github

阿超家裏的孩子上小學一年級了,這個暑假老師給家長們佈置了一個做業:家長天天要給孩子出一些合理的,但要有些難度的四則運算題目,而且家長要對孩子的做業打分記錄。dom

做爲程序員的阿超心想,既然天天都須要出題,那何不作一個能夠自動生成小學四則運算題目與解決題目的命令行 「軟件」呢。他把老師的話翻譯一下,就造成了這個軟件的需求:函數

程序接收一個命令行參數 n,而後隨機產生 n 道加減乘除(分別使用符號 + -* 來表示)練習題,每一個數字在 0 和 100 之間,運算符在 2 個 到 3 個之間。工具

因爲阿超的孩子才上一年級,並不知道分數。因此軟件所出的練習題在運算過程當中不得出現非整數,好比不能出現 3÷5 + 2 = 2.6 這樣的算式。ui

練習題生成好後,將生成的 n 道練習題及其對應的正確答案輸出到一個文件 subject.txt 中。spa

當程序接收的參數爲4時,如下爲一個輸出文件示例。

13 + 17 - 1 = 29
11 * 15 - 5 = 160
3 + 10 + 4 - 16 = 1
15÷5 + 3 - 2 = 4

 

思路:

#include "pch.h"                    //頭文件
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <time.h>   
using namespace std;

  

 


char Operator() { int i; srand(time(NULL)); //須要生成隨機的運算符與隨機數 i = rand() % 4 + 1; //就先設出這兩個函數 switch (i) { case 1: return '+'; case 2: return '-'; case 3: return '*'; case 4: return '/'; } } int Random() { int x; srand(time(NULL)); //看看是否爲僞隨機數 x = rand() % 100 + 1; return x; }

  

  先把主函數列上,方便以後的函數解說

int main()
{
	int a,b,c,d,judge,n,x;
	char op1,op2,op3;
	cout << "enter the number of calculations that you want to produce:"<<endl;
	cin >> n;                    //問要幾個四則運算
	for (x = 1; x <= n; x++)
	{
		judge = rand() % 3 + 1;
		if (judge = 1)            //judge爲運算符個數,1時再加1或2
		{
			judge = judge + rand() % 2 + 1;
		}
		if (judge == 2)           
		{
			a = Random();
			b = Random();
			c = Random();
			op1 = Operator();
			op2 = Operator();
			Calculation(op1, a, b);     //把兩隨機數與符號輸出
			Calculation(op2, c);       //用到函數重載
			cout << endl;
		}
		if (judge == 3)
		{                                   //三個運算符須要四個隨機數構成式子
			a = Random();
			b = Random();
			c = Random();
			d = Random();
			op1 = Operator();
			op2 = Operator();
			op3 = Operator();
			Calculation(op1, a, b);
			Calculation(op2, c);
			Calculation(op3, d);
			cout << endl;
		}
	}
}

  函數Calculation與Realmark(判斷除法運算結果是否爲小數)與全局變量int temporary:

  一開始想的是隻寫一個Calculation(op1, a, b)函數,在txt文件中把相鄰的兩個相同的數刪去一個,後來發現仍是重載加全局變量傳遞相同的數更爲簡單,便於實現

 

bool Realmark(int x,int y)             //兩數相除餘數爲零則符合條件
{
	if (x%y || y % x != 0)
	{
		return 0;
	}
	else return 1;
} 
void Calculation(char a, int x, int y)
{
	if (a == '*'||a == '+'||a == '-')
	{                                          //加減乘直接輸出
		cout << x << a << y;
	}
	if (a == '/')
	{
		do
		{
			if (Realmark(x, y))
			{
				cout << x << a << y;
				break;
			}
			else
			{
				x = Random();
				y = Random();
			}
		} while (Realmark(x, y));
	}
	temporary = y;              //每一個式子開始的數+符+數能夠調用次函數,而且把y賦值給全局變量
}                                   //方便下一個函數只輸出符+數,與判斷y與新的x如果除法會不會有餘數

int temporary; //全局變量,寫主函數以前便可


void Calculation(char a, int x) { if(a == '*'||a=='+'||a=='-') { cout << a << x; //加減乘便可直接輸出 } if (a == '/') { do { if (Realmark(x, temporary)) { cout << a << x ; break; } else { x = Random(); //Realmark爲0則要從新生成x,再比較新的x與tempoary } } while (Realmark(x, temporary)); } }

 

一個跑代碼時特別坑的就是用了它步驟中的控制檯項目,不知道是否是我沒轉化成c++項目,沒拷貝src文件的緣由,老是在第一行就開始報錯:

符號符號已屢次定義。The symbol symbol was defined more than once.

 

此錯誤後跟錯誤LNK1169

一個或多個多重定義的符號找到one or more multiply defined symbols found

生成失敗,由於多個定義的一個或多個符號。The build failed due to multiple definitions of one or more symbols. 此錯誤以前錯誤LNK2005

實驗屢次,從新開一個空項目纔再也不報錯。

 

3、 使用github克隆項目、提交代碼

github真是慢的要死還全是英文看不懂

仍是git簡直日了 仍是依舊不知道哪裏出錯

爲啥照着教程作會給我出來warning出來找不到文件  解決了這個(本身沒仔細看)又出來其餘的,人都傻了。手動傳的代碼最後

 

 

4、感想

無聊好無聊一直找錯誤找到心態爆炸,徹底沒有什麼成就感信了教程的邪一直在一些點打圈圈,啥都不會的感受太不爽了。

相關文章
相關標籤/搜索