第3次作業-四則運算(結對作業)
作業地址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266】
零、結對
要求:每2人自願結成1對(若出現奇數,則允許有且僅有一組同學由3人結成1對),由2人共同完成四則運算試題生成編碼,在真實物理空間中相距不得超過的距離,可以不借助設備對話。一般地,相距一兩米內,2人共同使用同一臺顯示器、同一套鼠標鍵盤,則符合要求。
一、程序要求(60分)
簡述
程序名稱:f4.exe
作用:一個用於四則運算的控制臺程序
功能列表:
- 功能1:支持整數和不含括號的四則運算且表達式可以重復。
- 功能2:支持小數和含小括號的四則運算且表達式可以重復。
- 功能3:表達式不重復且輸出結果顯示在控制臺,且將控制臺顯示的結果輸出到指定位置的txt文件中。
實現效果請與教師和助教給出樣例保持一致。
功能1(20分)
表達式:合法運算符為+
、-
、*
、/
,合法運算數為整數
。3個運算符,4個運算數。生成的表達式不存在小括號。
表達式的值:整數
或者小數
。表達式最後的值若為有限小數,如3/4,則直接輸出0.75;若為無限小數,如1/3,則最終表達式輸出結果保留三位小數,四舍五入,即輸出0.333。
請註意在表達式計算過程中1/3 != 0.33333333333333333333333333333333,而是無限長,例如 2/3-1/3的正確結果是0.333,而並非是0.334(計算過程為2/3-1/3=0.667-0.333=0.334)。
題目數量由用戶設置,若設置的題目總數N不為正整數,則輸出題目數量必須是 正整數。
。程序依次輸出每個表達式,用戶從控制臺輸入其猜測的答案(此過程稱為“答題”),答題格式為?用戶輸入答案
回答正確。
,否則錯誤則輸出回答錯誤,正確答案是Answer。
(Answer為此次表達式對應的正確答案)。答完所有題目後,程序應換行一次,最後輸出總共N道題,你答對M道題。
,N為題目總數,M為答對題目數量。控制臺輸入格式為
f4 -n 題目總數
,以題目總數N為10,答對題目數量M為任意小於題目總數的非負整數,此次假設M為4作為樣例,如下。
C:\Users\lenovo>f4 -n 10 1/2+3-1 ?2.5 回答正確。 1-3*4+5 ?-4 回答錯誤,正確答案是-6。 1/3+2-1 ?1.333 回答正確。 2/3-1/3 ?0.333 回答錯誤,正確答案是-6。 ···(一共10道題,需要回答完設定的題目數量) 總共10道題,你答對4道題。
C:\Users\lenovo>f4 -n -10
題目數量必須是 正整數。
C:\Users\lenovo>f4 -n -test
題目數量必須是 正整數。
C:\Users\lenovo>f4 -n 4.3
題目數量必須是 正整數。
C:\Users\lenovo為f4.exe文件所在路徑,>為提示符,如果你的wf.exe文件在D:\test中,此處的“C:\Users\lenovo>”則顯示為"D:test>"。"f4"是程序的名字,它真正的名字是"f4.exe","-n 10"是命令行參數。按下回車,此時程序開始執行。"-n"這個參數後面輸入多少,就生成多少題目。省略號和括號中的內容不用輸出,僅為了說明輸入輸出格式。
功能2(20分)
表達式:合法運算符為+
、-
、*
、/
、(
、)
,合法運算數為整數
或者小數
。3個運算符,4個運算數。生成的表達式可能有小括號,也可能不存在小括號。
表達式的值:整數
或者小數
。表達式最後的值若小數的值為0,如8.00或者8.0,則輸出為8;表達式最後的值若為有限小數,如3/4,則直接輸出0.75;表達式最後的值若為無限小數,如1/3,則最終表達式輸出結果保留三位小數,四舍五入,即輸出0.333。
請註意在表達式計算過程中1/3 != 0.33333333333333333333333333333333,而是無限長,例如 2/3-1/3的正確結果是0.333,而並非是0.334(計算過程為2/3-1/3=0.667-0.333=0.334)。
題目數量由用戶設置,若設置的題目總數N為1到100之間的正整數且包含起始位置,則輸出題目數量範圍為1到100之間的正整數。
。程序依次輸出每個表達式,用戶從控制臺輸入其猜測的答案(此過程稱為“答題”),答題格式為?用戶輸入答案
,若為正確答案則輸出回答正確。
,否則錯誤則輸出回答錯誤,正確答案是Answer。
(Answer為此次表達式對應的正確答案)。答完所有題目後,程序應換行一次,最後輸出總共N道題,你答對M道題。
,N為題目總數,M為答對題目數量。
控制臺輸入格式為f4 -c 題目總數
,以題目總數N為10,答對題目數量M為任意小於題目總數的非負整數,此次假設M為4作為樣例,如下。
C:\Users\lenovo>f4 -c 10
1/2+3.5-1
?3
回答正確。
1-3.5*(1+5)
?-7
回答錯誤,正確答案是-20。
1/(3+2)-1
?-0.8
回答正確。
2/3-1/3
?0.333
回答錯誤,正確答案是-6。
((1/2)-4)*5=
?-17.5
回答正確。
···(一共10道題,需要回答完設定的題目數量)
總共10道題,你答對4道題。
C:\Users\lenovo>f4 -c -10
題目數量範圍為1到100之間的正整數。
C:\Users\lenovo>f4 -c -test
題目數量範圍為1到100之間的正整數。
C:\Users\lenovo>f4 -c 4.3
題目數量範圍為1到100之間的正整數。
C:\Users\lenovo為f4.exe文件所在路徑,>為提示符,如果你的wf.exe文件在D:\test中,此處的“C:\Users\lenovo>”則顯示為"D:test>"。"f4"是程序的名字,它真正的名字是"f4.exe","-c 10"是命令行參數。按下回車,此時程序開始執行。"-c"這個參數後面輸入多少,就生成多少題目。省略號和括號中的內容不用輸出,僅為了說明輸入輸出格式。
功能3(20分)
請保留功能2,在功能2的基礎上完成功能3,功能2可能生成重復的四則運算表達式,現在請保證生成的四則運算表達式是不重復的,將其輸出至控制臺上且保存到指定位置的txt文件中。
控制臺與txt文件中數據格式均要求:答案與表達式橫向對齊,答案豎直方向左對齊,表達式與答案之間存在空白,空白個數不做限定。
控制臺輸入格式為f4 -c 題目總數 -f txt文件路徑
。txt文件路徑形如E:\test\test.txt
。假定txt文件路徑為E:\test.txt,題目數量為3,樣例如下。
C:\Users\lenovo>f4 -c 3 -f E:\test.txt
1/2+3.5-1= 3
1/(3+2)-1= -0.8
((1/2)-4)*5= -17.5
//此時E:\test.txt中僅保存上述三個表達式,如果每次輸出到同一個文件中,則每次輸出均覆蓋上一次輸出結果,此段文字僅解釋說明,不輸出
什麽叫重復的表達式?姑且定義為能通過交換律、結合律、分配律變換為同一道題的表達式是相同的。比如:
1*2+3*2
2*(1+3)+0
參考《構建之法》第4章兩人合作,結對編程上述功能,要求每人發布隨筆1篇 (代碼是共同完成的,博客是分別完成的)。結對編程的兩個同學的博客內容除了涉及到的代碼是相同的,而編程收獲或者每個人對項目重難點的理解應該是不同的。
二、博客要求(40分)
要求0(5分)
【你的博客第一行必須寫上作業要求的博客鏈接】 這樣,讀者看到學生的博客後,就可以點擊到作業要求的博客。
例如:https://www.cnblogs.com/ranh941/p/7999266.html。
反向鏈接,讓讀者了解背景。要不然很多人看了,並不了解要求,也是一頭霧水。
作業如果沒有此項,此次作業無效。
要求1(5分)
在博客中給出你們git倉庫地址。
git項目名稱:f4
git地址形式:https://git.coding.net/XXX/f4.git
項目目錄:
/f4.exe (此文件名要求必須是f4.exe。java或python代碼,請編譯為exe。)
/f4.cs (f4源代碼,文件名也可能是f4.cpp,f4.c,f4.py,f4.java)
/??? (f4源代碼所依賴的其他文件,如果存在的話。)
f4.exe需要由你自己的代碼編譯得到。f4.cs (或其他語言源代碼) 與f4.exe如果不能對應,則此次作業倒扣所有分數。
代碼要求在 coding.net 做版本控制。要求push&pull時使用git客戶端,而不使用web頁面。推薦git客戶端tortoisgit。安裝過程可參考鏈接:https://www.cnblogs.com/ranh941/p/7555082.html。
**請註意助教或教師會使用腳本pull每個人的項目,如果你在博客中給出的鏈接不符合規範而導致腳本無法獲取你的項目或者不符合要求1中任意一項規範,那麽程序要求得分為0。
要求2(30分)
- 博客中給出結對編程同學的博客地址和姓名。(5分)
- 介紹解題思路、每個功能的重點/難點、編程收獲,展示重要代碼片斷,展示你感覺得意、突破、困難的地方。(6分)
代碼要求:要求使用cnblogs代碼控件。凡粘貼IDE中的代碼截圖,或者貼文字而沒有關鍵字高亮或彩色的,要求3的得分記作0分。參考往屆博客https://www.cnblogs.com/ranh941/p/7545915.html、http://www.cnblogs.com/huangxman/p/5871201.html - 給出結對編程的體會(8分)
- 至少3項在編碼、爭論等活動中花費時間較長,給你較大收獲的事件。(6分)
- 給出照片1張,包括結對的2位同學、工作地點、計算機,可選項包括其他能表達結對編程工作經歷的物品或場景。 (5分)
關於抄襲
- 如果出現除結對編程同學以外的同學代碼、博客內容、代碼運行結果截圖相關的情況,扣除抄襲者和被抄襲者此次作業的所有分值,例如同學A和同學B結對編程,同學C卻和同學A的作業情況雷同,出現代碼運行結果一模一樣或者程序雷同的情況,則扣除同學A、B、C此次作業的所有分值。
- 直接從網上復制粘貼別人的代碼發表在博客中視為嚴重抄襲。模仿學習別人代碼是去理解別人的代碼思路,然後不看別人的代碼,自己重新寫代碼來實現功能,而並非直接復制粘貼別人的代碼放在博客中視為自己的工作。如有上述行為,扣除此次作業所有分值。
附加分(10分)
博客言之有物,表達清楚,不敷衍了事(比如一行籠統文字或者有圖片而不對圖片內容作解釋等),以上標準由助教和教師判定。
我們(本校或外校教師或助教)對於你的作業和項目的任何評價,都不是對你的價值觀或道德的評價,而是在我們對軟件工程學科的理解基礎上,對你的工作的評論。
第3次作業-四則運算(結對作業)