Вычислить значение бесконечной суммы (потоки) - C#

Узнай цену своей работы

Формулировка задачи:

Программа, которая будет вычислять значение бесконечной суммы 1-(1/1!)+(1/2!)-(1/3!)+ и т.д. с точностью E=10-6. Как создать потоки я понял, метод для факториала брал с msdn. Понял как вычислить один факториал, но бесконечную сумму, да еще и с чередованием знаков, не понял как. Может быть через цикл... Помогите пожалуйста!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
 
namespace ConsoleApplication16
{
    class Program
    {
        static int n = 3;
        static double result = 0;
        static void Function_of_thread()
        {
            result = (1.0 / factorial(n));
            Console.WriteLine(result);
        }
 
        static long factorial(int n)
        {
            int fact = 1;
            for (int i = 1; i < n; i++)
            {
                fact *= i;
            }
            return fact;
        }
 
        static void Main(string[] args)
        {
            for (int i = 0; i < 3; 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 ConsoleApplication16
{
    class Program
    {
        static object locker = new object();
        static void Function_of_thread()
        {
                double result = 1;
                double eps = 0.000001;
                double frl;
                int n = 1;
                do
                {
                    frl = 1.0 / Fact(n);
                    result += Math.Pow(-1, n) * frl;
                    n = n + 1;
                    Console.WriteLine("Я поток № " + Thread.CurrentThread.ManagedThreadId + " Сумма=" + result);
                } while (frl > eps);
            }
        static long Fact(int n)
        {
            int res = 1;
            if (n <= 1) res = 1;
 
            else
                for (int i = n; i > 1; i--)
                    res *= i;
 
            return res;
        }
        static void Main(string[] args)
        {
            for (int i = 0; i < 3; i++)
            {
                Thread thr = new Thread(Function_of_thread);
                thr.Start();
            }
            Console.Read();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы