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