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

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