繼上一次的任務後,本週老師又給自動出題系統提出了新的要求,我感覺我跟二柱子
一樣可憐,本次老師的要求是
1.題目避免重複
2.題目可以定製(數量/列印方式)
3.可以控制一下引數
(1)是否有乘除法
(2)是否有括號(最多可以支援十個數參與運算)
(3)數值範圍
(4)加減有無負數
(5)除法有無餘數
針對本次任務,我們逐個要求,逐個分析
對於題目避免重複可以用建立字串陣列,進行字串之間相互比較來解決,另外題目
可以定製通過隨機數生成題目數並帶入迴圈解決,同時列印方式可以用檔案輸入輸出流
把資料存到檔案裡。對於是否有乘除法,可以把+ - * /存到陣列裡,隨機呼叫
數值範圍可以用隨機數進行範圍控制,本題的難點在是否能生成括號,
括號是用來提公升優先順序,對於這個問題我們可以用迴圈呼叫來實現,具體含義是
四則運算表示式可以看成 表示式1+符號+表示式2的模式,在進入迴圈開表示式
可以隨機選擇放在表示式1或表示式2上,也可以決定有無括號,這樣用隨機生成
的運算數的個數決定迴圈的次數,加減有無負數和除法有無餘數,這裡只對兩個
運算數的表示式進行了操作。
下面是本次實驗源**:
//如下是不同題目數量的結果截圖:隨機生成四則運算表示式 楊超群 2016.3.12
#include#include
#include
#include
#include
using
namespace
std;
string str1[4]=;
intnum1,num2,num3,num4,num5,num6,num7,num8,num9,num10,n,m,a,b;
char str2[25
];char str3[25
];string str4[100
];void input(int n,int
p) num1=rand()%100+1
; num2=rand()%100+1
; num3=rand()%4
; num8=num1;
num9=num2;
num10=num3;
itoa(num1,str2,
10);
itoa(num2,str3,
10);
str=str2+str1[num3]+str3;
n=n-2
;
while(n!=0) //
當n不等於0時,迴圈生成str,即表示式+符號+表示式的形式
else
//上乙個str加括號
}else
//上乙個str放在符號的右邊
else
//上乙個str加括號
}n--;
}str4[p]=str; //
把str存入字串陣列str4中
for(int i=0;i//
查詢四則表示式是否有重複
if(str4[i]==str4[p])
input(m,p);
cout
outfile
if(m==2
)
else
if(num10==1) //
減法有無負數
else
if(num10==2
)
else
if(num10==3) //
除法有無餘數
}cout
<
}void changenum(int
n) }
}void
main()
srand((unsigned)time(null));
//隨機種子
cout<
輸入你想做的題目數:";
cin>>n;
changenum(n);
cout
<
四則表示式沒有重複
"<
}
題目數量為5
相應的檔案輸出
題目數量為30
相應的檔案輸出
總結:本次實驗有點倉促,勉勉強強符合,有很多瑕疵的地方,真分數沒有弄
0值判斷沒有寫,大於兩個數的運算結果沒有計算,以後逐個完善,希望做的更好。
自動生成四則運算
軟體工程導論 作業要求 homework 11376 這個作業的目標 生成乙個自動生成四則運算的程式 學號3190704110 include int right 0 int wrong 0 void add else void minu else void mul else void di els...
四則運算自動生成
1 能夠自動生成四則運算練習題 2 可以定製題目數量 3 使用者可以選擇運算子 4 使用者設定最大數 如十以內 百以內等 5 使用者選擇是否有括號 是否有小數 6 使用者選擇輸出方式 codeblocks 姓名班級 位址 牛斌帥1605班 房旭1604班 在程式設計過程中我們也遇到了種種問題並進行解...
自動生成四則運算
import random list1 a int input 計算數字最大是 sym def szys f random.randint 0,3 n1 random.randint 1,10 n2 random.randint 1,10 n1,n2 max n1,n2 min n1,n2 resu...