• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      利用VB編程解決數(shù)學(xué)問題

      2014-04-29 07:41:44陳維龍
      中國信息技術(shù)教育 2014年23期
      關(guān)鍵詞:數(shù)學(xué)問題

      陳維龍

      摘要:VB是常用的程序設(shè)計語言,簡捷、易用,運(yùn)行穩(wěn)定,運(yùn)行效率較高。在數(shù)學(xué)教學(xué)中,常遇到一些邏輯復(fù)雜,個例較多,難于歸納總結(jié)的問題,教師在準(zhǔn)備與講析這些問題的時候很難找到解決思路,無所適從。筆者將這些問題通過VB編譯成程序來運(yùn)行處理,可以充分發(fā)揮計算機(jī)的優(yōu)勢,迅速解決這些數(shù)學(xué)難題。

      關(guān)鍵詞:VB;窮舉法;數(shù)學(xué)問題

      ● 問題提出

      前幾天,上小學(xué)四年級的兒子指著試卷上的一個填空題,問我怎么做,題目描述:“用4、5、6、7、8這五個數(shù)組成一個兩位數(shù)和一個三位數(shù),乘積最大是( ? ),乘積最小是( ? )”。初一看好像是很簡單的一道題,我和妻子兩個人想當(dāng)然地找出了多個組合,可馬上都被自己的新發(fā)現(xiàn)打破,百思不得其解。于是,又上網(wǎng)搜索相關(guān)問題,得出各類答案與解決方案,但都有一些缺陷,有些規(guī)則看似有用,但當(dāng)把題中的五個數(shù)字更換為其他數(shù)時,規(guī)則又不一定適用。其間,我們雖然已找到了最大值和最小值,但卻不知道是不是恰當(dāng)?shù)拇鸢浮S谑?,我想到設(shè)計一個程序,用程序來解決這個問題,并試圖在此基礎(chǔ)上找到解答此類問題的規(guī)則。

      ● 算法分析

      此類問題,在找不出明顯的規(guī)則之前,只有通過窮舉法羅列出符合要求的全部組合,計算出每個組合的最大值與最小值,將每個組合的組合規(guī)則記錄到規(guī)則數(shù)組中,當(dāng)窮舉完所有的組合后,整理規(guī)則數(shù)組,去除重復(fù)的值,也就是組合規(guī)則,然后可以找出最大值組合與最小值組合的規(guī)律。因?yàn)榇祟愵}很少出現(xiàn)0這個數(shù),所以我設(shè)計時只用了1~9這九個數(shù),總結(jié)出來的規(guī)律可適用于有0出現(xiàn)求最大乘積的情況,求最小乘積的情況要稍作變通。描述算法如下:

      ①本程序通過嵌套循環(huán),從1~9這九個數(shù)中選取隨機(jī)五個不重復(fù)的數(shù),作為題干中要求的五個個位數(shù),并列出所有可能出現(xiàn)的組成一個兩位數(shù)和一個三位數(shù)的組合。

      ②在①循環(huán)中,每次找到符合要求的五個個位數(shù)后,將其分別填入五個文本框中,并均作如下運(yùn)算,先采用冒泡法,對這五個數(shù)進(jìn)行從小到大排序,并依次填回五個文本框中。然后對用于存放乘數(shù)、乘積及數(shù)值組合規(guī)則的四個數(shù)組進(jìn)行重定義,以便能夠存儲新得到的六個數(shù)及兩個數(shù)值組合規(guī)則。然后對剛?cè)〉玫奈鍌€個位數(shù)進(jìn)行操作,通過嵌套循環(huán),分別將任意兩個或三個組成一個數(shù),再將剩下的三個數(shù)或兩個數(shù)組成另一個數(shù),連同所得到的兩個乘積及數(shù)值組合規(guī)則一起存入數(shù)組。當(dāng)這五個個位數(shù)的所有可能組合均運(yùn)算成功并存入相應(yīng)數(shù)組后,從乘積數(shù)組中找出最大值和最小值,以及與之相對應(yīng)的兩組乘數(shù)和數(shù)值組合規(guī)則,輸出到富文本框RB1,同時將數(shù)值組合規(guī)則寫入最大值規(guī)則與最小值規(guī)則數(shù)組str_gzb()中。

      ③判斷①循環(huán)是否符合循環(huán)要求,如果符合,再進(jìn)入下一次循環(huán)。如果已完成所有符合要求的組合的運(yùn)算,則退出循環(huán)。

      ④去除規(guī)則數(shù)組str_gzb()中重復(fù)項(xiàng),統(tǒng)計出最大值和最小值的組合規(guī)則。也可以將得要的結(jié)果拷貝到Excel中,手工統(tǒng)計組合規(guī)則。

      ⑤數(shù)值組合規(guī)則規(guī)定如下:五個數(shù)字中最小的數(shù)所處的位置用A表示,最大的數(shù)所處的位置用E表示,其他類推。如題干中的4、5、6、7、8五個數(shù),組成一個兩位數(shù)47,其取值規(guī)則就是AD,組成一個三位數(shù)568,其取值規(guī)則就是BCE,在取值規(guī)則數(shù)組中記錄為“ADBCE”。

      ● VB程序設(shè)計過程

      在有了比較完善的算法分析之后,我利用VB程序進(jìn)行了設(shè)計。過程為:

      ①在VB中建立一個工程,增加一個窗體form1。

      ②在窗體中添加數(shù)組控件text1(0~4)、command1、Richtextbox1等控件,并設(shè)置command1控件的Caption屬性為“開始計算!”,設(shè)置Richtextbox1控件的名稱為“RB1”,調(diào)整各控件到適當(dāng)位置。

      ③添加窗體load代碼,聲明所要用到的各個動態(tài)數(shù)組,在command1中添加運(yùn)算過程代碼,添加用于記錄所選取數(shù)值組合規(guī)則的過程GL的代碼。

      ④運(yùn)算測試,修繕程序。

      ⑤將工程輸出為可執(zhí)行文件。

      ● 源碼

      利用VB程序設(shè)計完成后,所有的源代碼也一一完成,清晰地展現(xiàn)了利用此程序進(jìn)行數(shù)學(xué)運(yùn)用、算法分析的過程。部分源代碼如下。

      Private Sub Form_Load()

      Dim S() As Integer ? ? ?'存放乘積

      Dim G(), H() As Integer ?'存放乘數(shù)一 ,乘數(shù)二

      Dim Str_Gz() As String ?'存放當(dāng)前算術(shù)表述式規(guī)則

      Dim str_gzb() As String ? '存放所有數(shù)據(jù)組合中最大值和最小值規(guī)則數(shù)組

      Dim Str_bs As String ? ?'保存當(dāng)前算術(shù)表述式的變量

      Dim Str_Gz1, Str_Gz2 As String ?'存放本次循環(huán)最大值和最小值的數(shù)值組合規(guī)則

      End Sub

      Private Sub Command1_Click()

      Dim Ta, Tb, Tc, Td, Te As Integer ?'存放五個隨機(jī)的個位數(shù)的變量

      Dim nIndex As Long ? ? ? '循環(huán)變量

      Dim A, B, C, D, E, F As Integer ? ?'循環(huán)變量

      ReDim str_gzb(2)

      RB1.Text = RB1.Text & "所選數(shù)字 Max算式 Max規(guī)則 Max乘積Min算式 Min規(guī)則 Min乘積" & vbCrLf ? ?'設(shè)置列表的簡易列頭

      For Ta = 1 To 9

      For Tb = 1 To 9

      For Tc = 1 To 9

      For Td = 1 To 9

      For Te = 1 To 9

      If Ta <> Tb And Ta <> Tc And Ta <> Td And Ta <> Te And Tb <> Tc And Tb <> Td And Tb <> Te And Tc <> Td And Tc <> Te And Td <> Te Then

      Text1(0).Text = Ta

      Text1(1).Text = Tb

      Text1(2).Text = Tc

      Text1(3).Text = Td

      Text1(4).Text = Te

      ……

      ReDim Preserve str_gzb(UBound(str_gzb()) + 2) ?'不作判斷直接重定義這個數(shù)組,會增加一些空值,但不影響對數(shù)值組合規(guī)則的統(tǒng)計

      str_gzb(UBound(str_gzb()) - 1) = Str_Gz1

      str_gzb(UBound(str_gzb())) = Str_Gz2

      ……

      RB1.Text = RB1.Text & "******************************************" & vbCrLf

      RB1.Text = RB1.Text & "乘積最大的組合規(guī)則和乘積最小的組合規(guī)則:" & vbCrLf

      For i = 0 To UBound(str_gzb) ?'此循環(huán)部分代碼借鑒網(wǎng)絡(luò)代碼,去除最值組合規(guī)則數(shù)組中重復(fù)項(xiàng)

      For j = 0 To i – 1

      If str_gzb(i) = str_gzb(j) Then Exit For

      Next

      If j = i Then RB1.Text = RB1.Text & str_gzb(i) & vbCrLf

      Next

      End Sub

      ……

      Else

      If N(i) = A Then GL = GL & "A" "A"表示此位置是五個數(shù)中最小的數(shù),其余類推

      If N(i) = B Then GL = GL & "B"

      If N(i) = C Then GL = GL & "C"

      If N(i) = D Then GL = GL & "D"

      If N(i) = E Then GL = GL & "E"

      End If

      Next i

      End Function

      ● 運(yùn)行測試

      設(shè)計完此程序后,我進(jìn)行了測試,因?yàn)檫\(yùn)算量大,程序運(yùn)行時間一般需要一個小時以上,程序也可能出現(xiàn)假死現(xiàn)象,只要耐心等待即可。運(yùn)行結(jié)果如下圖(圖片根據(jù)運(yùn)行結(jié)果進(jìn)行了拼接)。

      由分析結(jié)果可以看出,此類問題的組合規(guī)則如下:將最大數(shù)作為兩位數(shù)的十位,第四大數(shù)作為兩位數(shù)的個位,將第二大數(shù)作為三位數(shù)的百位,第三大數(shù)作為三位數(shù)的十位,最小數(shù)作為三位數(shù)的個位,這樣組合出來的兩位數(shù)和三位數(shù)乘積最大;將最小數(shù)作為兩位數(shù)的十位,第三大數(shù)作為兩位數(shù)的個位,將第四大數(shù)作為三位數(shù)的百位,第二大數(shù)作為三位數(shù)的十位,最大數(shù)作為三位數(shù)的個位,這樣組合出來的兩位數(shù)和三位數(shù)乘積最小。

      ● 思考

      作為一款經(jīng)典的高級程序設(shè)計語言,VB的生命力依然旺盛,依然可以作為中小型程序的首選語言。

      猜你喜歡
      數(shù)學(xué)問題
      問題式教學(xué):我的一方“實(shí)驗(yàn)田”
      考試周刊(2016年97期)2016-12-26 10:09:45
      淺論初中數(shù)學(xué)教學(xué)中的數(shù)學(xué)問題
      考試周刊(2016年89期)2016-12-01 12:46:44
      讓數(shù)學(xué)教學(xué)更好地走進(jìn)生活
      考試周刊(2016年85期)2016-11-11 01:18:34
      數(shù)學(xué)問題解答方法多樣化探討
      淺析數(shù)學(xué)思想在數(shù)學(xué)教學(xué)中的應(yīng)用
      考試周刊(2016年64期)2016-09-22 14:51:14
      貼近生活學(xué)數(shù)學(xué)的教學(xué)實(shí)踐探討
      考試周刊(2016年70期)2016-09-20 14:26:27
      铜鼓县| 吴旗县| 文登市| 额尔古纳市| 桐乡市| 大理市| 都昌县| 隆子县| 五莲县| 菏泽市| 仁布县| 西丰县| 吴川市| 吴堡县| 黎城县| 盱眙县| 乌鲁木齐市| 麟游县| 论坛| 靖州| 无极县| 哈尔滨市| 苍南县| 英山县| 连州市| 吴川市| 和林格尔县| 阿拉善左旗| 仪征市| 古浪县| 嵩明县| 三台县| 北流市| 赣州市| 扶余县| 阳泉市| 喜德县| 江陵县| 洛阳市| 清苑县| 甘洛县|