Использование интерфейса и делегатов при вычислении силы тока и напряжения по закону Ома - 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д