Advertisement
Guest User

Untitled

a guest
Dec 24th, 2014
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.65 KB | None | 0 0
  1. open System
  2. open System.IO
  3. open System.Linq
  4.  
  5.  
  6. //Чтение из файла. Умею читать первую строку одного файла
  7. //let file = File.OpenText "Integral1.txt" // не тот файл, не там лежит
  8. //let str = file.ReadLine()
  9.  
  10.  
  11.  
  12.    
  13.  
  14. let str = "2 3 0 1"
  15. //let strings =  [ "1 5 0 2"; "2 3 0 1" ; "3 4 2 5" ]
  16. let inter (string:string)  = //вычисление интеграла для этой строки
  17.     let delSpace = string.Split(' ')
  18.     let strToList (s:string[]) =
  19.         [for c in s -> c]
  20.     let makeList = strToList delSpace
  21.     let rec takeEl numb (hd::tl) = if (numb > 1) then (takeEl (numb-1) tl) else(float hd)
  22.  
  23.     let numberCount ( s:string) =
  24.         s.Split(' ').Length
  25.  
  26.     let count = numberCount string
  27.     let degree = count - 2
  28.     let degree' = float degree
  29.    let num' num = float num
  30.     let max =  (takeEl (count) makeList)
  31.     let min =  (takeEl (count-1) makeList)
  32.  
  33.     let intergrate num = (1.0/(degree' - (num' num) + 1.0))   *  (takeEl num makeList)   *  
  34.                         (max**(degree' - (num' num) + 1.0)  - min **((degree' - (num' num) + 1.0) ) )//считаем интеграл
  35.     let rec answer deg = if (deg > 0) then ((intergrate deg) + (answer (deg - 1))) else 0.0 //интеграл этого члена + интеграл остатка
  36.     answer degree
  37.  
  38. let value = inter str
  39. printfn "%A" (value)
  40.  
  41.  
  42. (*let sleep1 =
  43.     let file = File.OpenText "Integral2.txt"
  44.     let a = file.ReadLine()
  45.     let b = file.ReadLine()
  46.     let c = file.ReadLine()
  47.     [a,b,c]
  48.  
  49. let sleep2 =
  50.     let file = File.OpenText "Integral3.txt"
  51.     let a = file.ReadLine()
  52.     let b = file.ReadLine()
  53.     let c = file.ReadLine()
  54.     [a,b,c]
  55.     *)
  56. let ReadAndCalc (name)  =
  57.     let lines =  File.ReadLines(name) |> Seq.toList
  58.     let calc =   [for i in lines -> async { return  (inter i)}]
  59.     Async.RunSynchronously (Async.Parallel calc)
  60.  
  61. let Open =
  62.     let files = ["Integral1.txt"; "Integral2.txt"; "Integral3.txt"]
  63.     let calc = [for i in files -> async {return (ReadAndCalc i)}]
  64.     Async.RunSynchronously (Async.Parallel calc)
  65. printfn "%A" Open
  66. (*printfn "%A" (intergrate 1)
  67. printfn "%A" (takeEl 1 makeList)
  68. printfn "max = %A" (takeEl (count) makeList)
  69. printfn "min = %A" (takeEl (count-1) makeList)
  70. printfn "%A" ((1.0/(degree' - (num' degree) + 1.0)))
  71. printfn "%A" (answer degree)
  72. printfn "%A"  ((degree' - (num' degree)+ 1.0))
  73. *)
  74.  
  75. (*
  76. let file1 = File.OpenText "Integral1.txt"
  77. let file2 = File.OpenText "Integral2.txt"
  78. let file3 = File.OpenText "Integral3.txt"*)
  79. //let files = ["Integral1.txt", "Integral2.txt", "Integral3.txt"] |> Seq.toList
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement