home *** CD-ROM | disk | FTP | other *** search
/ PC & Mediji 1997 April / PCM_9704.iso / makri / enax.txt < prev    next >
Text File  |  1997-03-15  |  3KB  |  72 lines

  1. Sub MAIN
  2. '    program izracuna "e^x" za ABS(X) < 230. (Mat.prirocnik str.378)
  3. '    opomba: e^2.3 = e^2 * e^0.3
  4. '    opomba: e^(-2.3) = 1 / e^2.3
  5.  
  6. '__________________zajem podatka__________________________________
  7.  
  8. e = 2.7182818284591
  9. P = Val(Selection$()) : a = Abs(P) : If a > 230 Then R$ = " Prevelik eksponent ! " : Goto IZPIS
  10.  
  11. '________________razstavljanje eksponenta_________________________
  12.  
  13. x = Int(a) : k = a - x         'celi in decimalni del eksponenta
  14.  
  15. '___________izracun e^x za celi del eksponenta____________________
  16.  
  17. If x >= 0 Then rezultat1 = 1
  18. For c = 1 To x : rezultat1 = rezultat1 * e : Next
  19. If k = 0 Then rezultat = rezultat1 : Goto ULOMEK
  20.  
  21. '___________izracun e^x za dec.del eksponenta_____________________
  22.  
  23. a2 = 1 : imen = 1 : vrsta = 0
  24. For N = 1 To (50 + (0.01 / k))
  25.     On Error Goto KONEC                                'prekoracitev
  26.     stev = a2 * k : a2 = stev                        'x na N
  27.     imen = imen * N                                    'n fakt.
  28.     vrsta = vrsta + (stev / imen)
  29. Next
  30. KONEC:
  31. T = N : rezultat = 1 + vrsta
  32.  
  33. '_____________mnozenje obeh vmesnih rezultatatov__________________
  34.  
  35. If rezultat1 <> 0 Then rezultat = rezultat1 * rezultat
  36. ULOMEK:
  37. If P < 0 Then rezultat = 1 / rezultat
  38. R$ = Str$(rezultat)
  39.  
  40. '____________zaokrozitev na N decimalk (npr.6)____________________
  41. ZAOKROZEVANJE: N = 6
  42.  
  43. '________razdelitev na celi,decimalni in ekponentni del___________
  44.  
  45. dc = InStr(R$, ".") : exp = InStr(R$, "E") : If exp <> 0 Then exp$ = Mid$(R$, exp, Len(R$) - exp + 1) Else exp = Len(R$)
  46. If dc > 1 Then R$ = LTrim$(Left$(Str$(rezultat), dc)) Else Goto IZPIS
  47. dec1$ = Mid$(Str$(rezultat), dc + 1, exp - dc - 1)
  48. 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
  49. If K1 <> 0 Then R$ = Str$(K1) : Goto SKUPAJ
  50. If Len(dec1$) < N And exp$ = "" Then dec1$ = Mid$(Str$(rezultat), dc + 1, exp - dc)
  51. If Len(dec1$) > N Then dec2$ = Mid$(dec1$, N + 1, 1) : dec1$ = Mid$(dec1$, 1, N) : dec$ = ""
  52. If Val(dec1$) = 0 Then dec$ = dec1$ : Goto SKUPAJ
  53. If Val(dec2$) >= 5 Then
  54.      For x = 1 To N - 1 : dec$ = dec$ + Mid$(dec1$, x, 1) : Next : dec$ = dec$ + LTrim$(Str$(Val(Mid$(dec1$, N, 1)) + 1))
  55.     Else
  56.     dec$ = dec1$
  57. End If
  58. SKUPAJ:
  59. If Len(dec$) < N Then For x = Len(dec$) To N - 1 : dec$ = dec$ + "0" : Next
  60. R$ = R$ + dec$ + exp$
  61.  
  62. '__________z vklopom in izklopom REM izbiramo nacin izpisa_________
  63.  
  64. IZPIS:
  65.  
  66. Insert "e ^ " + Str$(P) + " = " + R$ + " "
  67.  
  68. REM WordRight : Insert " = " + R$ + " (e ^ " + Str$(P) + ") "
  69.  
  70. REM WordRight : CharRight 1 :  Insert Chr$(9) + R$
  71. End Sub
  72.