两个Basic程序

作者在 2011-10-02 09:08:09 发布以下内容
DECLARE FUNCTION Add$ (a$, b$)
OPEN "Sum.in" FOR INPUT AS #1
OPEN "Sum.out" FOR OUTPUT AS #2
CLS
INPUT #1, n
FOR z = 1 TO n
  INPUT #1, s$
  p = INSTR(s$, " ")
  a$ = LEFT$(s$, p - 1)
  b$ = RIGHT$(s$, LEN(s$) - p)
  PRINT #2, Add$(a$, b$)
NEXT z
CLOSE
END

FUNCTION Add$ (a$, b$)
  la = LEN(a$)
  lb = LEN(b$)
  IF la < lb THEN SWAP la, lb: SWAP a$, b$
  FOR i = 1 TO la
    a = VAL(MID$(a$, la + 1 - i, 1))
    IF i <= lb THEN b = VAL(MID$(b$, lb + 1 - i, 1)) ELSE b = 0
    c = a + b + jw
    jw = c \ 10
    c = c MOD 10
    s$ = LTRIM$(STR$(c)) + s$
  NEXT i
  IF jw <> 0 THEN s$ = "1" + s$
  Add$ = s$
END FUNCTION
高精度多组加法(无数组)
DECLARE SUB Qsort (lo, hi)
RANDOMIZE TIMER
OPEN "Times.in" FOR INPUT AS #1
OPEN "Times.out" FOR OUTPUT AS #2
CLS
DIM SHARED n
INPUT #1, n
DIM SHARED a(n) AS DOUBLE
FOR i = 1 TO n
  INPUT #1, x, y, z
  a(i) = x * 3600 + y * 60 + z
NEXT i
Qsort 1, n
FOR i = 1 TO n
  z = a(i) MOD 60
  y = ((a(i) - z) MOD 3600) \ 60
  x = (a(i) - y - z) \ 3600
  PRINT #2, LTRIM$(STR$(x)); " " + LTRIM$(STR$(y)); " " + LTRIM$(STR$(z))
NEXT i
CLOSE
END

SUB Qsort (lo, hi)
  i = lo
  j = hi
  t = a(FIX(RND * (hi - lo + 1)) + lo)
  DO
    WHILE a(i) < t
      i = i + 1
    WEND
    WHILE a(j) > t
      j = j - 1
    WEND
    IF i <= j THEN
      SWAP a(i), a(j)
      i = i + 1
      j = j - 1
    END IF
  LOOP UNTIL i > j
  IF i < hi THEN Qsort i, hi
  IF j > lo THEN Qsort lo, j
END SUB
多时间段排序(随机化快排)
默认分类 | 阅读 329 次
文章评论,共0条
游客请输入验证码
文章分类
文章归档
最新评论