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