Сформировать как минимум три потока, которые будут вычислять значение бесконечной суммы с заданной точностью - C#
Формулировка задачи:
Немного изменить программу под пой вариант.
Разработайте многопоточное приложение, которое будет формировать как минимум три потока, которые будут вычислять значение бесконечной суммы с точностью Эпсилон=10-6
При этом потоки должны работать последовательно друг за другом. И включаться пользователем
Выражение: 1+(1/1!)+(1/2!)+(1/3!)+...+(1/n!)+...
Такая же программа для другого выражения:
Выражение: 1+(1/2^4)+(1/3^4)+...+(1/n^4)+...
Листинг программы
- using System;
- usingSystem.Collections.Generic;
- usingSystem.Linq;
- usingSystem.Text;
- usingSystem.Threading;
- namespace ConsoleApplication1
- {
- class Program
- {
- static double n = 1;
- static object locker = new object();
- static double eps = 0.000001, sum = 0, prev=0;
- static void Function_of_thread()
- {
- lock (locker)
- {
- prev = sum;
- sum+=1/(Math.Pow(n,4));
- ++n;
- Console.WriteLine("Япоток №" + n + " SUM=" + sum);
- }
- }
- static void Main(string[] args)
- {
- for (int i = 0; i < 10; i++)
- {
- Thread thr = new Thread(Function_of_thread);
- thr.Start();
- }
- Console.Read();
- }
- }
- }
Решение задачи: «Сформировать как минимум три потока, которые будут вычислять значение бесконечной суммы с заданной точностью»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading;
- namespace ConsoleApplication1
- {
- class Program
- {
- static int n = 1;
- static double sum = 1, prev = 0;
- static void Function_of_thread()
- {
- do
- {
- prev = sum;
- var x = fact(n);
- if (x == 0)
- return;
- sum += 1.0 / x;
- ++n;
- Console.WriteLine("Я поток № " + Thread.CurrentThread.ManagedThreadId + " SUM=" + sum);
- } while (true);
- }
- static long fact(int n)
- {
- if (n < 0)
- return 0;
- int res = 1;
- for (int i = 1; i < n; i++)
- res *= i;
- return res;
- }
- static void Main(string[] args)
- {
- Thread[] thr = new Thread[3];
- for (int i = 0; i < 3; i++)
- {
- thr[i] = new Thread(Function_of_thread);
- thr[i].Start();
- }
- Console.Read();
- for (int i = 0; i < 3; i++)
- thr[i].Abort();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д