thesnow 发表于 2009-5-14 11:59:50

每周任务#2

从每周任务1中,大家是否学到了知识呢?还是看了过了?

现在第二周任务来了:
A.下载一个M$雅黑字体,然后创建一个简单的GUI,在文本编辑框中,使用雅黑字体。(系统内本身带有此字体的用其它字体代替)
参考:字体注册,设置字体

B.求任意月份的兔子问题(裴波那挈数列)
参考:http://baike.baidu.com/view/568970.htm

pcbar 发表于 2009-5-14 15:09:24

我来
第2个
其实是求裴波那挈数列的第N位的值

$x=30;我的机器上$x=30用了 21 秒。(闪龙2800+/512M)
MsgBox(0,'完成','斐波那契数列的第'&$x&'位为:'&@CRLF&Fibonacci($x))
Func Fibonacci($n)
        if $n=1 or $n=2 then
                Return $n
        Else
                Return Fibonacci($n-1)+Fibonacci($n-2)
        EndIf
EndFunc

注:裴波那挈数列1,2,3,5,8,13,21,34。。。。

pcbar 发表于 2009-5-14 15:28:25

这样快多了$x = 3000
MsgBox(0, '完成', '斐波那契数列的第' & $x & '位为:' & @CRLF & Fibonacci($x))

Func Fibonacci($n)
        If $n = 1 Or $n = 2 Then
                Return $n
        EndIf
        $x_2 = 1
        $x_1 = 2
        $i = 3
        While $i <= $n
                $xnew = $x_1 + $x_2
                $x_2 = $x_1
                $x_1 = $xnew
                $i += 1
        WEnd
        Return $xnew
EndFunc   ;==>Fibonacci

sxd 发表于 2009-5-14 16:44:57

哎遇到数学问题就抓瞎可见自己的知识和逻辑能力是多么的匮乏

lm959680 发表于 2009-5-16 17:53:22

数学很差很差知识只能适合理论~~~:face (31):

zjimmy 发表于 2009-5-17 00:43:13

我来做第二个~$n = 20

MsgBox(0, '', '斐波那契数列的第' & $n & '位为:' & @CR & _Fibonacci($n))

MsgBox(0, '', '斐波那契数列的前' & $n & '位为:' & @CR & _Fibonacci($n, 1))

Func _Fibonacci($n, $flag = 0) ; 0-返回第$n个斐波那契数, 1-返回前$n个斐波那契数,分隔符为"|"
        If Not (IsInt($n) And $n > 0) Then
                SetError(1)
                Return 0
        EndIf
        Local $Rtn1, $Rtn2
        Local $var[$n]
        Switch $n
                Case 1
                        $Rtn1 = 1
                        $Rtn2 = '1'
                Case 2
                        $Rtn1 = 2
                        $Rtn2 = '1|2'
                Case Else
                        $var = 1
                        $var = 2
                        $Rtn2 = '1|2'
                        For $i = 2 To $n - 1
                                $var[$i] = $var[$i - 2] + $var[$i - 1]
                                $Rtn2 &= '|' & $var[$i]
                        Next
                        $Rtn1 = $var[$n - 1]
        EndSwitch
        If $flag == 0 Then
                Return $Rtn1
        ElseIf $flag == 1 Then
                Return $Rtn2
        EndIf
EndFunc   ;==>_Fibonacci

zhuang513 发表于 2009-5-17 07:30:54

不是感觉很懂.. 看看帮助..

pusofalse 发表于 2009-5-17 07:52:17

Func _Fibonacci($iStop)
        Local $iX, $iY = 1, $iIndex, $sResult

        While $iIndex < $iStop
                $iX += $iY
                $iY += $iX
                $iIndex += 2
                $sResult &= $iX & " " & $iY & " "
        WEnd
        $sResult = StringSplit($sResult, " ")
        Return $sResult[$iStop]
EndFunc        ;==>_Fibonacci()

78391493 发表于 2009-5-17 23:13:16

4# sxd


跟我一样。。。遇到数学就两眼一抹黑

78391493 发表于 2009-5-17 23:59:22

本帖最后由 78391493 于 2009-5-18 00:01 编辑

#NoTrayIcon

Dim $URL = "http://download.microsoft.com/download/d/6/e/d6e2ff26-5821-4f35-a18b-78c963b1535d/VistaFont_CHS.EXE"

If Not FileExists(@WindowsDir & "\Fonts\msyh.ttf") Then
        ProgressOn("字体下载中", "下载微软雅黑字体", "准备下载...", -1, -1, 2 + 16)
        $Size = InetGetSize($URL)
        InetGet($URL, @ScriptDir & "\VistaFont.EXE", 1, 1)
        While @InetGetActive = 1
                $Percentage = @InetGetBytesRead / ($Size / 100)
                ProgressSet($Percentage, "已下载 " & Round($Percentage, 1) & " %")
                Sleep(1000)
        WEnd
        ProgressSet(100, "正在安装")
        Run(@ScriptDir & "\VistaFont.EXE")
        WinWait("Windows Vista 字体 - 微软雅黑 5.0", "请仔细阅读以下许可协议。按 PAGE DOWN 键可查阅协议的余下部分。")
        ControlClick("Windows Vista 字体 - 微软雅黑 5.0", "请仔细阅读以下许可协议。按 PAGE DOWN 键可查阅协议的余下部分。", "Button1")
        WinWait("Windows Vista 字体 - 微软雅黑 5.0", "Windows Vista 字体 - 微软雅黑 5.0 正在安装。")
        ControlClick("Windows Vista 字体 - 微软雅黑 5.0", "Windows Vista 字体 - 微软雅黑 5.0 正在安装。", "Button1")
        ProgressOff()
EndIf

GUICreate("每周任务2", 410, 282, -1, -1, BitOR(0x00080000,0x00C00000,0x80000000,0x80880000,0x00800000,0x04000000))
GUICtrlCreateEdit("这是一个使用微软雅黑字体的文本框!", 8, 8, 393, 265)
GUICtrlSetFont(-1, 11, 400, 0, "微软雅黑")
GUISetState(@SW_SHOW)

While 1
        If GUIGetMsg() = -3 Then Exit
WEnd

睡觉:face (16):

78391493 发表于 2009-5-18 14:05:41

我忘了有参数可以用了,顺便加上速度吧。#NoTrayIcon

Dim $URL = "http://download.microsoft.com/download/d/6/e/d6e2ff26-5821-4f35-a18b-78c963b1535d/VistaFont_CHS.EXE"

If Not FileExists(@WindowsDir & "\Fonts\msyh.ttf") Then
        ProgressOn("字体下载中", "下载微软雅黑字体", "准备下载...", -1, -1, 2 + 16)
        $Size = InetGetSize($URL)
        InetGet($URL, @ScriptDir & "\VistaFont.EXE", 1, 1)
        $Timer = TimerInit()
        While @InetGetActive = 1
                $Percentage = @InetGetBytesRead / ($Size / 100)
                $Speed = Round(Round(@InetGetBytesRead / (TimerDiff($Timer) / 1000) / 1024, 1))
                ProgressSet($Percentage, "已下载: " & Round($Percentage, 1) & " %; 即时速度: " & $Speed & "Kb/s")
                Sleep(1000)
        WEnd
        ProgressSet(100, "正在安装")
        RunWait(@ScriptDir & "\VistaFont.EXE /Q")
        FileDelete(@ScriptDir & "\VistaFont.EXE")
        ProgressOff()
EndIf

GUICreate("每周任务2", 410, 282, -1, -1, BitOR(0x00080000,0x00C00000,0x80000000,0x80880000,0x00800000,0x04000000))
GUICtrlCreateEdit("这是一个使用微软雅黑字体的文本框!", 8, 8, 393, 265)
GUICtrlSetFont(-1, 11, 400, 0, "微软雅黑")
GUISetState(@SW_SHOW)

While 1
        If GUIGetMsg() = -3 Then Exit
WEnd

thesnow 发表于 2009-5-18 23:10:14

我忘了有参数可以用了,顺便加上速度吧。#NoTrayIcon

Dim $URL = "http://download.microsoft.com/download/d/6/e/d6e2ff26-5821-4f35-a18b-78c963b1535d/VistaFont_CHS.EXE"

If Not FileExists(@WindowsDir ...
78391493 发表于 2009-5-18 14:05 http://www.autoitx.com/images/common/back.gif

既然说了"参考:字体注册,设置字体",自然是希望用API来写.(注册 .TTF 等字体)

yykj 发表于 2009-5-19 03:53:58

有空要来学习下.这几天翻论坛头都晕了.除了人少点.倒是蛮干净的

javarike 发表于 2009-5-20 16:22:01

学习,顶顶...

an2net 发表于 2009-5-20 21:50:45

刚开始学autoit,进来看看。。各位大虾的源码我已保存,留作学习参考之用....
页: [1] 2
查看完整版本: 每周任务#2