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

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

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

Требуется написать программу с использованием интерфейса и делегатов. Программа должна считать силу тока и напряжение по закону Ома. Причем, в одном случае резисторы соединены параллельно, а в другом последовательно... Подскажите как такое реализовать? Прочитал вот эти темы, но так и не понял как это совместить воедино... https://msdn.microsoft.com/ru-ru/library/ms173156.aspx Пример использования интерфейсов разными классами https://msdn.microsoft.com/ru-ru/library/ms173171.aspx Для чего нужны делегаты
Как-то так?
Листинг программы
  1. delegate double MyDelegate(double current, double voltage); //объявляем делегат
  2. interface IZakonOma //объявляем интерфейс
  3. {
  4. void Amperage(MyDelegate mydelegate, double resistance);
  5. void Voltage(MyDelegate mydelegate, double resistance);
  6. }
  7. class GetParallel : IZakonOma
  8. {
  9. public void Amperage(MyDelegate mydelegate, double resistance)
  10. {
  11. //параллельное соединение | подсчёт силы тока
  12. }
  13. public void Voltage(MyDelegate mydelegate, double resistance)
  14. {
  15. //параллельное соединение | подсчёт напряжения
  16. }
  17. }
  18. class GetConsistent : IZakonOma
  19. {
  20. public void Amperage(MyDelegate mydelegate, double resistance)
  21. {
  22. //последовательное соединение | подсчёт силы тока
  23. }
  24. public void Voltage(MyDelegate mydelegate, double resistance)
  25. {
  26. //последовательное соединение | подсчёт напряжения
  27. }
  28. }
  29. class Program
  30. {
  31. static void Main(string[] args)
  32. {
  33. }
  34. }

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Ohm_Law {
  7.     public delegate double GetOhmResult(params double[] args);
  8.     enum OperationType {
  9.         GetResultSerial,
  10.         GetResultParallel
  11.     }
  12.     class Program {
  13.         static Dictionary<OperationType, GetOhmResult> operations =
  14.             new Dictionary<OperationType, GetOhmResult>();
  15.         static void FillOperations() {
  16.             operations.Add(OperationType.GetResultParallel, (double[] target) => {
  17.                 if (target.Length == 0) {
  18.                     return 0;
  19.                 }
  20.                 else {
  21.                     double mult = target.Sum(a => 1.0 / a);
  22.                     return 1.0 / mult;
  23.                 }
  24.             });
  25.             operations.Add(OperationType.GetResultSerial, (double[] target) => {
  26.                 if (target.Length == 0) {
  27.                     return 0;
  28.                 }
  29.                 else {
  30.                     return target.Sum();
  31.                 }
  32.             });
  33.         }
  34.         static void Main(string[] args) {
  35.             FillOperations();
  36.             double[] ohms_1 = { 200.0, 470.0, 220.0 };
  37.             double serialRes = operations[OperationType.GetResultSerial](ohms_1);
  38.             double parallelRes = operations[OperationType.GetResultParallel](ohms_1);
  39.         }
  40.     }
  41. }

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


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

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

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы