.NET 4.x Определить четность - C#

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

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

Всем доброго времени суток есть 2 потока
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace lol
{
    class Sum2
    {
        private Thread Thrd;
        private double summ1;
        private double tmp1,e;
        private double x = 0;
        private int n = 0;
 
        public Sum2(string name, double x, byte n,double e)
        {
            this.x = x;
            this.n = n;
            this.e = e;
            summ1 = 0;
            summ2 = 0;
            tmp1 = 0;
            tmp2 = 0;
            Thrd = new Thread(this.Run);
            Thrd.Name = name;
            Thrd.Start();
        }
 
        void Run()
        {
                do
                {
                        if (n % 2 == 0)
            {
                     summ1 = summ1 + n;
                    n++;
                    tmp1 = summ1 + n;
n++;
} while (Math.Abs(summ1 - tmp1) > e);
            }
 
        }
        public double Sum
        {
            get
            {
                return tmp1;
            }
        }
        public void Join()
        {
            Thrd.Join();
        }
        class Program
        {
            static void Main(string[] args)
            {
                
                Sum2 mt1 = new Sum2("1 ", 1, 15,1);
                Sum2 mt2 = new Sum2("2 ", 1, 12,1);
                mt1.Join();
                mt2.Join();
                System.Console.WriteLine(" 1 поток: " + mt1.Sum + "\n 2 поток" + mt2.Sum);
 
                Console.ReadKey();
            }
        }
    }
}
но что то тут не так задание такое "первый поток вычисляет сумму нечетных n второй - четных";

Решение задачи: «.NET 4.x Определить четность»

textual
Листинг программы
using System;
using System.Threading;
 
namespace ConsoleApplication7
{
    class Program
    {
        static void Main()
        {
            int n = 39;
            var t1 = new Thread(Even);
            var t2 = new Thread(Odd);
            t1.Start(n);
            t2.Start(n);
            t1.Join();
            t2.Join();
            Console.ReadKey();
        }
        
        private static void Even(object data)
        {
            Console.WriteLine("Even = {0}", EvenOrOdd(0, (int) data));
        }
 
        private static void Odd(object data)
        {
            Console.WriteLine("Odd = {0}", EvenOrOdd(1, (int)data));
        }
 
        private static int EvenOrOdd(int from, int n)
        {
            int sum = 0;
            for (int i = from; i < n; i += 2)
                sum += i;
            return sum;
        }
    }
}

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


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

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

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