Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open System.IO
- open System.Linq
- //Чтение из файла. Умею читать первую строку одного файла
- //let file = File.OpenText "Integral1.txt" // не тот файл, не там лежит
- //let str = file.ReadLine()
- let str = "2 3 0 1"
- //let strings = [ "1 5 0 2"; "2 3 0 1" ; "3 4 2 5" ]
- let inter (string:string) = //вычисление интеграла для этой строки
- let delSpace = string.Split(' ')
- let strToList (s:string[]) =
- [for c in s -> c]
- let makeList = strToList delSpace
- let rec takeEl numb (hd::tl) = if (numb > 1) then (takeEl (numb-1) tl) else(float hd)
- let numberCount ( s:string) =
- s.Split(' ').Length
- let count = numberCount string
- let degree = count - 2
- let degree' = float degree
- let num' num = float num
- let max = (takeEl (count) makeList)
- let min = (takeEl (count-1) makeList)
- let intergrate num = (1.0/(degree' - (num' num) + 1.0)) * (takeEl num makeList) *
- (max**(degree' - (num' num) + 1.0) - min **((degree' - (num' num) + 1.0) ) )//считаем интеграл
- let rec answer deg = if (deg > 0) then ((intergrate deg) + (answer (deg - 1))) else 0.0 //интеграл этого члена + интеграл остатка
- answer degree
- let value = inter str
- printfn "%A" (value)
- (*let sleep1 =
- let file = File.OpenText "Integral2.txt"
- let a = file.ReadLine()
- let b = file.ReadLine()
- let c = file.ReadLine()
- [a,b,c]
- let sleep2 =
- let file = File.OpenText "Integral3.txt"
- let a = file.ReadLine()
- let b = file.ReadLine()
- let c = file.ReadLine()
- [a,b,c]
- *)
- let ReadAndCalc (name) =
- let lines = File.ReadLines(name) |> Seq.toList
- let calc = [for i in lines -> async { return (inter i)}]
- Async.RunSynchronously (Async.Parallel calc)
- let Open =
- let files = ["Integral1.txt"; "Integral2.txt"; "Integral3.txt"]
- let calc = [for i in files -> async {return (ReadAndCalc i)}]
- Async.RunSynchronously (Async.Parallel calc)
- printfn "%A" Open
- (*printfn "%A" (intergrate 1)
- printfn "%A" (takeEl 1 makeList)
- printfn "max = %A" (takeEl (count) makeList)
- printfn "min = %A" (takeEl (count-1) makeList)
- printfn "%A" ((1.0/(degree' - (num' degree) + 1.0)))
- printfn "%A" (answer degree)
- printfn "%A" ((degree' - (num' degree)+ 1.0))
- *)
- (*
- let file1 = File.OpenText "Integral1.txt"
- let file2 = File.OpenText "Integral2.txt"
- let file3 = File.OpenText "Integral3.txt"*)
- //let files = ["Integral1.txt", "Integral2.txt", "Integral3.txt"] |> Seq.toList
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement