Использование интерфейса и делегатов при вычислении силы тока и напряжения по закону Ома - C#

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

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

Требуется написать программу с использованием интерфейса и делегатов. Программа должна считать силу тока и напряжение по закону Ома. Причем, в одном случае резисторы соединены параллельно, а в другом последовательно... Подскажите как такое реализовать? Прочитал вот эти темы, но так и не понял как это совместить воедино... https://msdn.microsoft.com/ru-ru/library/ms173156.aspx Пример использования интерфейсов разными классами https://msdn.microsoft.com/ru-ru/library/ms173171.aspx Для чего нужны делегаты
Как-то так?
 delegate double MyDelegate(double current, double voltage); //объявляем делегат 
    interface IZakonOma //объявляем интерфейс
    {
        void Amperage(MyDelegate mydelegate, double resistance);
        void Voltage(MyDelegate mydelegate, double resistance);
    }
    class GetParallel : IZakonOma
    {
        public void Amperage(MyDelegate mydelegate, double resistance)
        {
            //параллельное соединение | подсчёт силы тока
        }
        public void Voltage(MyDelegate mydelegate, double resistance)
        {
            //параллельное соединение | подсчёт напряжения
        }
    }
    class GetConsistent : IZakonOma
    {
        public void Amperage(MyDelegate mydelegate, double resistance)
        {
            //последовательное соединение | подсчёт силы тока
        }
        public void Voltage(MyDelegate mydelegate, double resistance)
        {
            //последовательное соединение | подсчёт напряжения
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
 
        }
    }

Решение задачи: «Использование интерфейса и делегатов при вычислении силы тока и напряжения по закону Ома»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Ohm_Law {
    public delegate double GetOhmResult(params double[] args);
    enum OperationType {
        GetResultSerial,
        GetResultParallel
    }
    class Program {
        static Dictionary<OperationType, GetOhmResult> operations = 
            new Dictionary<OperationType, GetOhmResult>();
        static void FillOperations() {
            operations.Add(OperationType.GetResultParallel, (double[] target) => {
                if (target.Length == 0) {
                    return 0;
                }
                else {
                    double mult = target.Sum(a => 1.0 / a);
                    return 1.0 / mult;
                }
            });
            operations.Add(OperationType.GetResultSerial, (double[] target) => {
                if (target.Length == 0) {
                    return 0;
                }
                else {
                    return target.Sum();
                }
            });
        }
        static void Main(string[] args) {
            FillOperations();
            double[] ohms_1 = { 200.0, 470.0, 220.0 };
            double serialRes = operations[OperationType.GetResultSerial](ohms_1);
            double parallelRes = operations[OperationType.GetResultParallel](ohms_1);
        }
    }
}

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


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

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

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