home *** CD-ROM | disk | FTP | other *** search
/ PC & Mediji 1997 April / PCM_9704.iso / makri / dekadn~1.txt next >
Text File  |  1997-03-16  |  4KB  |  107 lines

  1. Dim Shared a, k, P, rezultat, R$, razmak$
  2.  
  3. Sub MAIN
  4. '    Program izracuna "log X" za 10E-99 < X < 10E99
  5. '    opomba: log X = ln X / ln 10
  6.  
  7. '__________________zajem podatka ________________________________
  8.  
  9. a = Val(Selection$()) : e = 2.7182818284591 : ln10 = 2.302585092994
  10. For I = 1 To 30 : razmak$ = razmak$ + " " : Next
  11. MsgBox "Program raΦuna dekadni logaritem Ütevila " + Str$(a), - 8
  12. If a = 1 Then R$ = Str$(0) : rezultat = 0 : Goto ZAOKROZEVANJE
  13. If a > 1E+100 Or a < 1E-100 Then R$ = " Napaka ! " : Goto IZPIS
  14. If (a <= 1.9 And a > 1) Then P = a : LN : Goto ZAOKROZEVANJE
  15. If a < 1 Then Goto MALI Else Goto VELIKI
  16.  
  17. '________________korenjenje podatka za stevila > 1.9______________
  18.  
  19. VELIKI:
  20. P = a : k = 0
  21. While P > 1.9
  22.     SQRT : P = rezultat : k = k + 1    
  23. Wend
  24. P = rezultat : LN : P = rezultat
  25. For w = 1 To k : P = P * 2 : Next            'mno₧enje rezultata z 2
  26. rezultat = P : R$ = Str$(P) : Goto ZAOKROZEVANJE
  27.  
  28. '________________korenjenje podatka za stevila < 1________________
  29.  
  30. MALI:
  31. P = a : k = 0
  32. '________________podatek je zapisan eksponencialno________________
  33.  
  34. While InStr(LTrim$(Str$(P)), "-") <> 0
  35.     k = k + 1 : SQRT : P = rezultat
  36. Wend
  37.  
  38. '________________podatek je zapisan decimalno_____________________
  39.  
  40. While Left$(LTrim$(Str$(P)), 3) = "0.0"
  41.     SQRT : P = rezultat : k = k + 1    
  42. Wend
  43. LN : P = rezultat
  44. For w = 1 To k : P = P * 2 : Next            'mno₧enje rezultata z 2
  45. rezultat = P : R$ = Str$(P)
  46.  
  47. '____________zaokrozitev na N decimalk (npr.6)____________________
  48.  
  49. ZAOKROZEVANJE: rezultat = rezultat / ln10 : N = 0
  50.  
  51. '________razdelitev na celi,decimalni in ekponentni del___________
  52.  
  53. dc = InStr(R$, ".") : exp = InStr(R$, "E") : If exp <> 0 Then exp$ = Mid$(R$, exp, Len(R$) - exp + 1) Else exp = Len(R$)
  54. If dc > 1 Then R$ = LTrim$(Left$(Str$(rezultat), dc)) Else Goto IZPIS
  55. dec1$ = Mid$(Str$(rezultat), dc + 1, exp - dc - 1)
  56. If N = O And Val(Mid$(dec1$, 1, 1)) >= 5 Then K1 = Val(R$) : If K1 > 0 Then K1 = K1 + 1 Else K1 = K1 - 1
  57. If K1 <> 0 Then R$ = Str$(K1) : Goto SKUPAJ
  58. If Len(dec1$) < N And exp$ = "" Then dec1$ = Mid$(Str$(rezultat), dc + 1, exp - dc)
  59. If Len(dec1$) > N Then dec2$ = Mid$(dec1$, N + 1, 1) : dec1$ = Mid$(dec1$, 1, N) : dec$ = ""
  60. If Val(dec1$) = 0 Then dec$ = dec1$ : Goto SKUPAJ
  61. If Val(dec2$) >= 5 Then
  62.      For x = 1 To N - 1 : dec$ = dec$ + Mid$(dec1$, x, 1) : Next : dec$ = dec$ + LTrim$(Str$(Val(Mid$(dec1$, N, 1)) + 1))
  63.     Else
  64.     dec$ = dec1$
  65. End If
  66. SKUPAJ:
  67. If Len(dec$) < N Then For x = Len(dec$) To N - 1 : dec$ = dec$ + "0" : Next  
  68. R$ = R$ + dec$ + exp$
  69.  
  70. '__________z vklopom in izklopom REM izbiramo nacin izpisa_________
  71.  
  72. IZPIS:
  73.  
  74. Insert "log " + Str$(a) + " = " + R$ + " "
  75.  
  76. REM WordRight : Insert " = " + R$  : Insert " (log) "
  77.  
  78. REM WordRight : CharRight 1 :  Insert Chr$(9) + R$
  79.  
  80. MsgBox "KON╚ANO !", - 2
  81. End Sub
  82.  
  83. Sub LN
  84. '__________________izracun ln x za 0 < x < 2_______________________
  85. '___________________(Mat.prirocnik str.378)________________________
  86.  
  87. a2 = 1 : imen = 1 : st1 = - 1 : vrsta = 0
  88. For N = 1 To 100 + k * 30
  89.     stev = a2 * (P - 1) : a2 = stev                '(x-1) na N
  90.     imen = N                                    'n
  91.     st1 = st1 * (- 1)                            '(-1) na N+1
  92.     vrsta = st1 * stev / imen + vrsta
  93. MsgBox     "Program raΦuna dekadni logaritem Ütevila " + Str$(a) + razmak$ + "Preostalih korakov : " + Str$((100 + k * 30) - n), - 8
  94. Next
  95. T = N : rezultat = vrsta : R$ = Str$(rezultat)
  96. End Sub
  97.  
  98. Sub SQRT
  99. '________________izracun kv.korena stevila P_______________________
  100.  
  101. a0 = P + 1 : a1 = (a0 + P / a0) / 2
  102. While a0 <> a1
  103.     a0 = a1 :    a1 = (a0 + P / a0) / 2
  104. Wend
  105. rezultat = a1 : R$ = Str$(rezultat)
  106. End Sub
  107.